WordPress Localization and Templating

I’m using Smarty Templates for the back-end and Handlebars for the front-end for the plugin that I’m building.

It’s only now that I discovered that the localization doesn’t work when I declare my labels this way:

Read More
$ecom_labels = array(
    'product_details' => __( 'Details', 'ecom' ),
    'technical_specs' => __( 'Specifications', 'ecom' ),
    'images' => __( 'Images', 'ecom' ),
    'customer_reviews' => __( 'Reviews', 'ecom' )
);

And then later on supply it on my templates:

$smarty->assign( 'label', $ecom_labels );

But it seems like its working on individual variables:

$var = __('Specifications', 'ecom');
echo $var; //especificaciones

And this leads me to a solution like this:

$details_label = __('Details', 'ecom');
$specs_label = __('Specifications', 'ecom');

$labels = array(
    'product_details' => $details_label,
    'technical_specs' => $specs_label,
);

But I’m declaring an extra variable for each item in the array just to make the localization work.

update

Playing with the code, I noticed that its actually working:

$labels = array(
'technical_specs' => __('Specifications', 'ecom'),
);

echo $labels['technical_specs']; //especificaciones

The variable I was using was declared globally. But when I tried to declare the variable directly inside the function for the ajax hook it echoed out the translated version of the text.

So I guess the problem here is how I structured my plugin. Because what I’m currently doing is declared all the variables that I plan to use globally in the global scope and then just use global keyword to access them later on inside the functions.

Any ideas?

Related posts

Leave a Reply