There is a wide range of translation tools available in the gettext ecosystem. Some of the are listed on Wikipedia. The general workflow is always the same:
.pottemplate as the basis for translation. This will generate a new translation catalog (a
.pofile) or updates an existing
.pofile for the next step.
Some gettext translation tools will also generate compiled
.mo files. You can safely ignore these, we won't be using them.
By far the easiest option to translate is Transifex. This online service lets you get started quickly and does not require you (or your translators) to install anything. This service is not free, but there are free plans available for open-source projects.
An alternative to Transifex is Pootle, a web interface for translations. Pootle can be rather difficult to setup though.
The poedit application should be installed on your desktop, but is very easy to use (with one small exception). Here's a step by step guide:
Start Poedit and choose the "New Catalog from POT File..."
.pot file. This will open the "Catalog properties" dialog. Most of these options can be ignored, except for the Language and Plural Forms fields:
You can find the correct value for these fields on this page. Warning: Be sure to check that you don't include a semicolon at the end of the plural-forms value, otherwise Poedit will not show the correct input boxes.
Save the new
.po file somewhere in your project (I recommend putting it in a
po folder, next to the
.pot file, as is convention for gettext projects).
Translate the strings.
Save your catalog and continue to the next step
If you make changes to your project, simply run
grunt again to generate a new
.pot template. Then:
Use the "Update from POT File..." menu option. This will update your translation catalog by adding new strings, removing obsolete ones and flagging slightly changed ones for review.
Update your translations as usual and remember to save your work.
Next: Compiling your translations