WordPress L10n: How to Translate Your Plugin
In the first part of this series on WordPress plugin i18n and l10n, we learned how to internationalize a WordPress plugin.
This second (and concluding) part will be a walk-through on making a plugin ready for translation, as well as learning how to localize or translate a plugin into a new language.
The process of making a plugin ready for translation is fairly straight-forward. First of all, you’ll need to generate a .pot
file. This file is used by translators to translate your plugin into a new language.
This .pot
file contains the original strings (in English) of your plugin.
Here is an example POT file entry:
#: plugin-name.php:123
msgid "Welcome to SitePoint"
msgstr ""
A translator looking to translate the text Welcome to SitePoint
(at line 123
in your plugin file) into German will add the translation between the quotation marks.
#: plugin-name.php:123
msgid "Welcome to SitePoint"
msgstr "Willkommen auf SitePoint"
Generating POT file
As previously mentioned, the POT file is the one that is handed to translators, so that they can do their work.
Take note: before generating your plugin POT file, ensure you’ve internationalized your plugin.
There are a couple of ways to generate a POT file for your plugin.
Plugin Repository Admin Tools
The official WordPress plugin repository has a tool for generating the POT file of a plugin which is located at the Admin page of every plugin listing.
To access the Admin page of your plugin, login to the plugin repository and click the green Admin
button on the sidebar.
Follow the short guide below to see how easy it is to generate POT files using the admin tool.
- Click on
Continue
in theGenerate POT file
section.
- Then click on
Get POT
to download the POT file.
Poedit
There are a number of Gettext translation editors but Poedit is popular among the WordPress faithful.
The pro version allows you to create the PO/POT file with one click.
If you don’t have the pro version you can easily get this Blank POT and use it as the base of your POT file.
Once you have placed the blank POT in the languages
folder of your plugin, double-click on it and open it with Poedit.
Click Update
in Poedit to update the POT file with your plugin strings.
Finally, click File > Save
or Ctrl + S
to save the changes.
If you own a Pro version of this tool, generating the POT file is as easy as following the steps below.
- Click
File > New WordPress translation
and select your plugin folder. - Poedit will skim over your plugin files and extract the translatable string.
- Select the language of the translation from the pop-up dialog box.
Ctrl + S
and explicitly save the file as.pot
.- You can save the file as
.po
and afterwards rename it to.POT
.
A PO and a POT file are similar in that they have the same content format. The subtle differences between them are:
- It is the
.pot
file that is used by a translator and not the PO file. - It is from the resulting
.po
translation file a.mo
file is compiled.
It is a good idea to offer the POT file along with your plugin, so that translators won’t have to ask you specifically about it.
Plugin L10n
Localization describes the subsequent process of translating an internationalized plugin into a new language.
How to Localize a Plugin
To localize a plugin, grab the plugin POT
file, open it in a text editor, and enter the translation of every string at their respective msgstr
sections, in between the quotation marks.
Save the file in this format my-plugin-{locale}.po
where the {locale}
is the language code and/or country code that you defined in the constant WPLANG
in the file wp-config.php
. For example, the locale for German is de_DE
. The my-plugin
is the text domain of the plugin.
Remember, it is from the .po
file that the resultant .mo
file (used by WordPress in translating a plugin) is generated.
Let’s see how to generate the MO file from the PO file.
Online PO to MO converter tool
There are a couple of online tools that convert a .po
file to a .mo
file. Personally, I use the tool at tools.konstruktors.com.
To generate a MO from a PO file, upload the .pot
file. The tool will automatically convert the file, and provide you an .mo
file for download.
Using Poedit for L10n
Poedit provides a simple interface for translating plugin strings or texts and can also generate the required MO file from a PO file.
To localize or translate a plugin into a new language using Poedit, follow the guide below.
- Open the plugin
.pot
file with Poedit. - Click on the translatable strings and enter their respective translation in the text area labeled Translation.
- When you are done with the translation, save the file in this format
my-plugin-{locale}.po
. E.g.espw-plugin-de_DE.po
whereespw-plugin
is the text domain andde_DE
as the locale.
On saving the PO file, the MO file is automatically generated.
If a translator sends your plugin translation file (the MO and PO files) to you, copy the MO (.mo) file to your plugin language
folder for use by WordPress.
When a user operating a Localized version of WordPress uses your plugin, the plugin will then be in their language.
Wrap Up
If you want your plugin to reach the widest possible audience, internationalize it and make it translation ready.
Although you might only be proficient in one language, if you make your plugin ready for translation, it opens up the possibility for people to voluntarily translate your plugin.
If you have any questions, suggestions or contributions, I would be happy to hear them in the comments.