I want to translate this plugin.
The plugin has already been translated into other languages and it has .pot files for adding new languages (as far as I understood from description).
How do I create .po and .mo files for my new language and make them accessible so as to be used by the plugin? I’ve tried to define Russian language in my wp-config.php file by inserting the definition below:
define ('WPLANG', 'ru_RU');
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The Editor
There are others, but this is most used: Poedit, a cross-platform gettext catalogs (.po files) editor.
The Formats
.mostands for Machine Object
— compiled export of the.pofile which is used by WordPress.postands for Portable Object
— editable text file with the translations strings
— based on the master.potfile, using Update from POT file PoEdit function
— some folks distribute this as a master file, but it should be used only for translations.potstands for Portable Object Template
— editable text file used to grab all the translatable strings from WordPress itself and Themes and Plugins, using Update from Sources PoEdit function
The Procedure
- Duplicate the .pot file and rename it to
plugin-basename-lang_COUNTRY.po - Example for the referenced plugin case:
subscribe-reloaded-pt_BR.po
— pt_BR means Portuguese Brazil, but many languages don’t have a country variation…
— you’ll have to fill in with your own language WPLANGinwp-config.phpfile must be set to your language, e.g.,pt_BR- Every time you save the
.pofile, PoEdit automatically generates a.mofile, which is the one WordPress uses and basically the only one you need to upload
Observations
- If you do a full or a decent partial translation, submit it to the plugin author so he can include it in the Repository and you get credited for it
- Don’t forget to make a backup of your translation, because if you upgrade the plugin your file will be lost
- @user17078 plugin suggestion is quite nice, but I never used it much
Method 2
You can try this codestyling-localization plugin:. You can translate you plugins and themes using this.
Method 3
(Here is an EXAMPLE of translation to DEUTSCH. CHANGE the customs to YOUR DESIRED ones.)
in every plugins head, there is an unique name.
(for example:
/* Plugin Name: my-pluginname ....... */
then, in that plugin’s folder, create a folder “languages”;
then, into your plugin .php file (somewhere in the top), insert the initialization code:
class load_language
{
public function __construct()
{
add_action('init', array($this, 'load_my_transl'));
}
public function load_my_transl()
{
load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
}
}
$zzzz = new load_language;
then open any text editor, then insert like this code (NOTE, THAT we are only adding two sample messages, “hello” and “bye”, so , you can ADD AS MANY messages AS YOU WANT with the similar lines).
# English translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Automatically generated, 2012. # msgid "" msgstr "" "Project-Id-Version: my-pluginname 1.0n" "Report-Msgid-Bugs-To: n" "POT-Creation-Date: 2012-08-06 13:46-0400n" "PO-Revision-Date: 2013-03-21 11:20+0400n" "Last-Translator: Automatically generatedn" "Language-Team: nonen" "MIME-Version: 1.0n" "Content-Type: text/plain; charset=utf-8n" "X-Poedit-SourceCharset: iso-8859-1n" "Content-Transfer-Encoding: 8bitn" "Plural-Forms: nplurals=2; plural=(n != 1);n" "X-Generator: Poedit 1.5.4n" #: mypluginindex.php:87 (it is just a line of a note, to remind where our code appears) msgid "mymessage1" msgstr "Hello" #: mypluginindex.php:88 msgid "mymessage2" msgstr "Bye"
then save this file as “my-pluginname-en_US.po” (note, that .po is an extension of file, so check that your text editor program has not saved to “my-pluginname-en_US.po.TXT”).
then download POEDIT software, and open this file. then edit the “translation” field, and then save as “my-pluginname-de_DE”
there will be generated two files ( If poEdit does not generate the second .mo file automatically, just go to File -> Preferences -> Editor and check the box that says “Automatically compile .mo file on save”),
then put those two file into “languages” folder.
after this, open wp-config.php and find this code:
define ('WPLANG, '');
and change to
define ('WPLANG, 'de_DE');
That’s all.
When WordPress is loaded, it will read your plugins language file, with prefix -de_DE.
So, in the plugin’s .php file, instead of:
echo "Something string";
you should use:
echo __("mymessage1", 'my-pluginname');
Finished. Now you should test your plugin.
p.s. used links:
- codex.wordpress.org/I18n_for_WordPress_Developers
- codex.wordpress.org/Translating_WordPress
- codex.wordpress.org/Writing_a_Plugin
- codex.wordpress.org/Installing_WordPress_in_Your_Language
Method 4
You will want to use POEdit. It’s a free application for creating .po/.mo files.
I wrote a pretty in-depth tutorial on the entire topic here. You can skip to Step 3 – Create the Translation File For Text Domain.
Method 5
I suggest also http://poeditor.com/. It is a web-based translation tool that works great with .po, .mo, .pot and other types of files.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0