Tag Info

Hot answers tagged

15

1. Write with localization in mind Don't use echo or print() to produce text output, instead use the WordPress functions __() and _e(): /** Not localization friendly */ echo "Welcome to my plugin"; // OR print("Welcome to my plugin"); /** Localization friendly */ _e('Welcome to my plugin', 'my-plugin'); // OR $my_text = __('Welcome to my plugin', ...


11

Indeed, wp_localize_script() is simple, it just adds quotes around the values and escapes the content, expecting all of them to be strings. However, there is the l10n_print_after key of the array, which will be printed without any interference at all. It can be used to execute arbitrary code after the strings are passed. You can use it to pass your extra ...


11

By far the best (easiest) way is to use the locale filter (inside get_locale()). First set up a quick function for retrieving a different language to use on the locale filter. /** * A function returns with returns the user's selectd locale, if stored. */ function wpse35622_get_new_locale($locale=false){ $new_locale = ...


10

In this case, 'themify' is the defined textdomain for the Theme, used to make the Theme translatable. (Codex reference: load_theme_textdomain()). Making a Theme translation-ready requires a few steps. Define the Theme's textdomain: load_theme_textdomain( 'themify', TEMPLATEPATH.'/languages' ); Define translatable strings in the template. This is done ...


9

Use the fourth parameter for get_post_time(): $time = get_post_time( 'F j, Y', // format TRUE, // GMT get_the_ID(), // Post ID TRUE // translate, use date_i18n() ); get_post_time() calls mysql2date() internally, and it passes the $translate argument through. In mysql2date() we find this: if ( $translate ) ...


9

There is a second argument in the __() function. It should be set to the domain you are are using for your plugin or theme. In the examples below I use 'text_domain'. Your domain string should be unique. It should not match any other domain string. Not using a text domain argument defaults to 'default' the WordPress domain name. See the link for more ...


9

If you look into /wp-admin/edit-form-advanced.php, you will find the meta box: add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core'); Note the __('Publish') – the function __() leads to translate() where you get the filter 'gettext'. There are two ways to handle your problem: 1. Address the string in a single ...


8

I wouldn't try to localize your slugs. Instead, why not give your users the option to change them by adding another field to the permalink settings page? Hook into load-options-permalink.php and set up some things to catch the $_POST data to save your slug. Also add a settings field to the page. <?php add_action( 'load-options-permalink.php', ...


8

You can do the following: Get the the language pack (e.g. de_DE.mo) from wordpress.org. If the language pack isn't available as a standalone download, you could also use the .mo file which is bundled in the WordPress ZIP-file for your language. Located under wp-content/languages. Move the .mo file to wp-content/languages/ of your default (english) ...


8

In wp-includes/l10n.php you will find the function get_locale(). It offers a filter; you can set the language and ignore the constant: function get_locale() { global $locale; if ( isset( $locale ) ) return apply_filters( 'locale', $locale ); // WPLANG is defined in wp-config. if ( defined( 'WPLANG' ) ) $locale = WPLANG; ...


7

Step 1 Open your file in PoEdit. Step 2 Go to "Catalogue" » "Settings" Step 3 Fill in "Language" and "Country" 1). Step 4 Fill "Pluralform" (last field). // For 2 plural forms nplurals=2; plural=n != 1; // For 3 plural forms (for e.g. russian), use: nplurals=3; plural=(n%10==1 &amp;&amp; n%100!=11) ? 0 : ((n%10&gt;=2 &amp;&amp; ...


6

Use the filter 'mce_external_languages'. From wp-includes/class-wp-editor.php: The following filter loads external language files for TinyMCE plugins. It takes an associative array 'plugin_name' => 'path', where path is the include path to the file. The language file should follow the same format as /tinymce/langs/wp-langs.php and ...


6

The Editor There are others, but this is most used: Poedit, a cross-platform gettext catalogs (.po files) editor. The Formats .mo stands for Machine Object -- compiled export of the .po file which is used by WordPress .po stands for Portable Object -- editable text file with the translations strings -- based on the master .pot file, using Update from POT ...


6

The second part is not required, it just loads a PHP file with language specific functions. Examples In some countries/regions/religions it is not allowed to use capital letters in a word for anything else than the name of some god. In these cases you probably want to remove the Wordpress to WordPress filter. Some languages (Chinese) do not use spaces (in ...


6

The code for hakre's suggestion to use translation filter would be something like this: add_filter( 'gettext', 'change_publish_button', 10, 2 ); function change_publish_button( $translation, $text ) { if ( $text == 'Publish' ) return 'Save'; return $translation; }


6

I just found the answer and instead of putting this in the Title: <!--:en-->My English Title<!--:--><!--:fr-->My French Title<!--:--> We need to put this code: [:en]My English Title[:fr]My French Title and qTranslate does the rest :)


5

First, read this Codex page about translating WordPress. You have to create a language file to put into your language directory, do this by following the next steps: I assume you want to use poedit since you talk about a .po file download poedit File > new catalog In the first tab, fill in the fields, the most important ones are Language, in your case: ...


5

Is it enough to just create a child-theme - let's say technically without adding anything else but the bare minimum style.css - to have the translation of the parent-theme being used automatically for the child-theme as well? Basically, the answer is NO, ... but... there's an option: Add a mu-plugin. This (MU-)Plugin does several things: It hooks ...


5

_e() echoes the translated string, which will not work in variable assignment. You need to use __(), which returns the translated string.


5

_x() let's you add a context to your strings. This is useful when you are using the same string in different places. This string may need different translations depending on the language. Your example would be : echo 'a1 in context 1 ' . _x('a1', 'context1', 'mydomain'); echo 'a1 in context 2 ' . _x('a1', 'context2', 'mydomain'); There are more examples ...


5

You should move the po- and mo-file with the translation of your plugin outside your plugin's directory. Whenever you update your plugin, your plugin files are replaced causing any file that is not part of the default plugin package to be deleted. (If you are translating your own plugin, you could as well add the translation files directly to your plugin ...


5

You can get a list of available languages with get_available_languages( $dir ). It returns an array with all .mo files where the names does not start with 'continents-cities', 'ms-' or admin-. To get a readable name for the file use format_code_lang( $code ). If you scan a directory for language files and get an array like array( 'de_DE', 'tr_TR' ) this ...


4

The list is available in $GLOBALS['l10n'][ $text_domain ]. To get the looong list of translatable WordPress strings just use: print '<pre>' . htmlspecialchars( print_r( $GLOBALS['l10n']['default'], TRUE ) ) . '</pre>'; Do not use these strings in your theme or plugin. They are internal, de facto private. They can change any time, even in ...


4

the_search_query() echoes itself, so by putting it into another echo function (what _e() is) you'll get result as in second example. It isn't recommended to use variables or function inside l18n functions, because they can't be translated, for more information see Otto's: Internationalization: You’re probably doing it wrong. So you should use code like ...


4

This is not a full answer but some directions: Any text displayed surpasses a translation filter and can therefore be changed in a callback function (hook). So if the hook is only registered on the page where you would like to change that, job done. The draft button could be "removed" by hiding it via CSS. The CSS could be injected into the ...


4

You both have the right idea, but you'll actually need both fitlers, one to catch the button text, another to catch the localised text, so a combination of the two. This works.. class MyClass { function __construct() { add_action('admin_head-post.php', array ( $this, 'load_gettext_filters' ), 1 ); ...


4

Regardless if you go the PHP or jQuery route, I suggest you set up your filters or enqueue your Javascript in the admin_head-post[-new].php or admin_print_scripts-post[-new].php hook. There you can be sure that the global variable $post_type is set, and can check whether it is slide. Since the post thumbnail code is called after these hooks, you can set up ...


4

You don’t have to make anything special for WPML, using the regular translation code should be enough. See I18n for WordPress Developers in the Codex. Code preparation style.css Add Text Domain and Domain Path to your theme’s style.css. Example: /* * Theme Name: My awesome theme * Text Domain: my_awesome_theme * Domain Path: /languages */ ...


3

I won't address the issue of variables in the string since it's already been said. You want to keep your string static, meaning that the content won't change. You also want to keep out unnecessary HTML. __( '<p>Hello World!</p>' ); __( '<h1>Hello World!</h1>' ); The above will take up two rows in your table for what is essentially ...


3

Hi to translate your website you can do the following: Define your language in wp-config.php : define('WPLANG', 'pl_PL'); Then generate a po file for your theme with e.g this service: iCanLocalize Scanner Then your po and mo files should be named pl_PL.po and pl_PL.mo and put into a folder called languages or lang or something like this in your theme. if ...



Only top voted, non community-wiki answers of a minimum length are eligible