Plugin Author
Chouby
(@chouby)
Polylang provides the same feature (translating options) in different ways. You can either use the pll_register_string / pll__ API function, or the wpml-config.xml file (that’s normally for WPML, but Polylang can read it).
My idea is to avoid shortcodes because it’s ugly when the plugin is de-activated.
Thanks Chouby,
Good practice using purchased theme is to create a child theme and make all your changes there. Which means that you do not change the base theme.
Therefore PHP functions cannot be used.
The wpml-config.xml on the other hand is a great solution for 99.9% of the cases.
Petty for me, my client’s theme is one of those 0.1%. It is not storing each option in the database, but combine all options to one string.
With this theme, I still cannot see a better solution than the ugly shortcode.
Ronny
Plugin Author
Chouby
(@chouby)
In that case wpml-config.xml can’t work but I don’t understand why php code should not work. How your theme does retrieve its options?
Of course that PHP will work, but I do not want to change the purchased theme. If I will, my client will not be able to update it.
Plugin Author
Chouby
(@chouby)
I did not meant hacking the theme. It is generally possible to use available filters.
Hi,
Nice solution ronshe but I’m new in this multilingual functions so could you please explain where to add this shortcode script you wrote so I can use the shortcodes later?
Thank you.
Hi mirilailai,
Look at Chouby’s answers.
The need in the shortcode is not recommended and very rarely needed.
Be sure that you MUST use it.
Ronny
Yeah I did but it looks very complicated. I have no idea how to pull these strings. I’m trying to translate a theme custom field which is in the Theme Options.
If my theme is called “spa” and the theme field is called Intro Content, how should I register the string?
Can the fields accept shortcodes?
So put my code in functions.php
Use the shortcode like this:
[polylang lang=”en”]English[/polylang][polylang lang=”sp”]Spanish[/polylang]
I add `function polylang_shortcode($atts, $content = null)
{
if (empty($content))
return ”;
extract( shortcode_atts( array(‘lang’ => ”), $atts ) );
if (empty($lang))
return “<h3>You must specify ‘lang’ using shortcode: polylang</h3>”;
return ($lang == pll_current_language()) ? $content : ”;
}
add_shortcode(‘polylang’, ‘polylang_shortcode’);`
and it pulls me an error: Fatal error: Cannot redeclare polylang_shortcode() (previously declared in /home/meliaspa/www/www/wp-content/plugins/polylang/polylang.php:33) in /home/meliaspa/www/www/wp-content/themes/spa/functions.php on line 11
when I save..
You have the function twice. That’s why it tells you Cannot redeclare
So I have the function already but when I use the shortcodes it doesn’t work..So does that mean the custom field doesn’t support shortcodes and I should try the strings option?