[wp-hackers] Localizing Plugins and Themes

Ryan Boren ryan at boren.nu
Mon Oct 18 02:56:49 UTC 2004


Currently, plugins and themes cannot be localized because their strings 
are not in the default WP catalog.  To remedy this, I added the ability 
for plugins and themes to load their own catalogs.

To localize a plugin, call load_plugin_textdomain() at the top of your 
plugin, passing it a string to identify the domain.

load_plugin_textdomain('myplugin');

load_plugin_textdomain() looks in the plugin directory for a file called 
$domain-$locale.mo where $domain is the textdomain specified in the call 
to load_plugin_textdomain() and $locale is the language and country code 
specified in WPLANG.  If WPLANG is en_AU and the domain is "myplugin", 
the file loaded is wp-content/plugins/myplugin-en_AU.mo.

Now, when you markup strings in your plugin, you must specify the domain 
in the calls to __() and _e().

__('String to translate.', 'myplugin');

With all strings marked in this manner, your plugin is ready for 
localization.  You just need to generate a POT file and give it to 
translators.

Theme catalogs are loaded with load_theme_textdomain().  
load_theme_textdomain() looks in the active theme directory for a file 
called $locale.mo.  Strings are marked in the same way that plugin 
strings are marked.

So, load_plugin_textdomain() and load_theme_textdomain() load 
translation catalogs for plugins and themes, respectively.  __() and 
_e() now take a second argument which specifies the catalog in which to 
lookup strings.  You must specify a domain when loading catalogs and 
marking strings for plugins and themes.

Ryan




More information about the hackers mailing list