Monthly Archives: February 2013

How To Translate a WordPress Plugin

This is valid not only for translations but also for changing any texts within a plugin.

We got this asked a lot. The official WordPress guide about translating is a bit confusing and isn’t focused on plugins, so I decided to write a short guide here. It will use WatuPRO as an example but is also applicable to any other properly written and localization-ready WordPress plugin. Let’s go, step by step.

(Note: WatuPRO customers can find some existing community translations here)

Using Loco Translate (Recommended)

If you can’t get the translation to work, check the Troubleshooting section.

1. Install and activate Loco Translate

Loco Translate is the de-facto standard for doing this, it’s free and easy to use.

2. Create New Translation

Unless you have downloaded a translation file, you will need to create new translation. Select the plugin from the “Plugins” menu under Loco Translate and click on “New Language”:

On the next screen select your language and choose a location:

When doing a new translation yourself or editing a translation select the second option – “Custom” as shown above. This will ensure that your files will not be deleted if you manually update the plugin by deleting it and uploading a new version.

That’s it, you are ready to go. Click on “Start Translating” and translate the texts you need translated. You don’t need to translate all text in the plugin.

3. Translating from an exiting incomplete .po/.mo files

Say you have obtained an existing translation but you want to do some changes. For example you have downloaded a community translation of WatuPRO. Because these are products of voluntarily efforts they often aren’t up to date with the ever evolving plugin. Some strings will be changed, some new strings will be added, etc.

When you load the files in your wp-content/languages/plugins folder, Loco Translate will recognize the translation and show it. However it will not be showing the new strings that we added in English but are not existing in the community translation.

To solve this, simply click on the Sync button:

Voila, now you have them and can continue translating.

Manual Way

If for some reason you don’t want to use Loco Translate, here’s how to do the translation manually.

1. Get Poedit

Poedit is free editor for .pot files and de-facto the standard for working with them. Unless you have specific alternative in mind and a good reason to use it, I recommend you downloading Poedit, it’s available for most operating systems.

2. Open the .pot file

poedit

You actually need to go to File -> New Catalog from POT file. Select the .pot (in WatuPRO this is watupro.pot stored in the root) and double-click on it. Poedit will ask you about project title – you can use the default one. Then you’ll need to save the catalog as .po and .mo files. I recommend you properly name the target file right from this moment. The official docs are a bit lacking on this issue, and it’s very important. The name of your .po and .mo file should be constructed like this:

plugin-textdomain-with-dashes-locale_Locale.po.

To make it more clear, let’s use WatuPRO example again and a French translation. The proper name is:

watupro-fr_FR.po and watupro-fr_FR.mo

How will you know what are the correct parts of this name? The plugin textdomain is usually same as the folder name of the plugin, but to be safe you should seek information from its author OR open the main plugin file and search for “load_plugin_textdomain” call. The first word in the braces is the plugin textdomain. The proper name of your locale can be found at http://codex.wordpress.org/WordPress_in_Your_Language

Where to save these files? The best place is wp-content/languages/plugins folder. This way you will not lose your translation even if manually applying a new version of your plugin.

3. Translate It

Some guides will tell you that you have to translate everything. NO. This is not true. You can omit strings and translate only what you need translated. For example users of plugins like WatuPRO may want only the end-user facing texts translated. In such a case you don’t have to spend time translating everything – the plugin will work just fine with only a few localized texts. For the rest it will use the non-translated text (usually English).

Important: Don’t translate any %s or %d characters that you see in the texts. They will be replaced with dynamic texts and numbers. Just leave them as is.

4. Set Your Locale in wp-config.php

Note: From WordPress version 4.0 this constant is no longer used and is IGNORED. You need to set your lancuage in your Dashboard -> Settings page.

This is a very important step and without it nothing will work.

This below is valid only for WordPress versions before version 4.0. Unless you already use a translated version of WordPress, it’s possible that your locale is not set in wp-config.php. So open the file and find “WPLANG”. You will see a line like this:

define(‘WPLANG’, ”);

You have to add your locale there. Using the French example, it will be:

define(‘WPLANG’, ‘fr_FR’);

That’s it. Save the file and re-upload it. Don’t worry, any plugins and themes that are not translated will keep working fine in English.

5. Re-activate the plugin

Some users report that even after going through the above steps, nothing happens. So you may need to re-activate the plugin to get it to work (this is not documented anywhere so I am not even sure why it’s sometimes required and sometimes – not).

Troubleshooting

If your translation does not work, please double and triple check the following:

  • Your .po / .mo files have the correct names. Using the WatuPRO example and French / France this means watupro-fr_FR.po and watupro-fr_FR.mo. These names will be different for other plugins and other locales.
  • Your .po / .mo files are in the correct place: wp-content/languages/plugins. Place them there and NOT under the plugin folder. If directory “plugins” does not exist, create it.
  • You have selected your language / locale in the WordPress Settings page.

Ideally you shouldn’t have to contact us about problems with translation. If you still do, you’ll need to provide us admin access to have a look. But all we can do is to ensure all the above steps are properly completed.

WatuPRO 3.3

This version of WatuPRO comes shortly after the last one as we wanted to address several important issues.

So here is what’s new:

  • Admin can now see the student’s dashboard along with their exams and reports (in Reporting module)
  • Admin can filter questions by category when managing them
  • Manage questions category page that lets you delete and edit the existing categories
  • You can now allow other roles – Editors, Authors and Contributors – to create and edit quizzes. Thus you can delegate the work of making the quizzes to someone else without heading them your main admin login.
  • A new shortcode lets you display user’s answers on the final screen. This is an improvement compared to using the “Display answers” option because it lets you choose a place and text that will go before the answers.
  • You can now define a different content to be sent by email than the content shown on-screen after taking the test. This is useful if you want to force users to check their email or dashboard instead of showing them the results right on the screen.
  • Improved localization – we’ve had some strings in the javascript in the last .pot file. Now everything is translated.

That’s it for now! Expect a guide on translation in a day or two, as we often get questions about this.

As usual the upgrade is free if you have bought less than 1 year ago, otherwise upgrading is just 40% of the regular price and starts another 1 year cycle of free upgrades and support.

WatuPRO 3.2

There’s no joke, we really hear your feedback. And the latest update to WatuPRO is proving this again. Let’s get right to the news:

  1. Shortcode for showing only unresolved questions on the results screen. This is useful if you want to show the users which questions they didn’t answer correctly but without revealing the correct answers to them.
  2. Pull a number of random questions per category. Now the old randomization feature lets you spread the number of questions equally per question category.
  3. Option to send email with user results to the quiz taker even when they are not registered.
  4. Paginate per category – show questions from each category on their own page.
  5. Minified javascript for faster loading.
  6. You can now use decimals in points.
  7. Randomize questions but don’t randomize answers to them (option)
  8. Reuse questions from another exam on the fly – Intelligence module only

As usual old customers who purchased less than 12 months ago will get the upgrade for free. Otherwise it’s just 40% of the full price.

Thanks for being with us and keep those suggestions coming!