FusionForge uses standard GNU gettext for its internationalisation system. This system is widely known amongst the i18n community, which removes the burden of having to learn a home-made translsation system.
As of end of March, 2010, there are a handful of languages with rather good translation status: French is 100% translated, Russian is about 80%, German is about 60%, and Spanish, Catalan, traditional Chinese and simplified Chinese are all above 50%. Other languages with a reasonably good status include Basque, Italian, Brazilian Portuguese, Korean, Dutch and Swedish (all above 30%). These numbers should be taken with a grain of salt, though, as the untranslated strings are often the ones least frequently seen.
- No HTML tags in translated strings except <a>, <b>, <i>, <em> and <strong>.
- No more all CAPS word. Exceptions are acronyms like URL, HTML, etc.
- If you need quotes, use smart quotes “like this” and not ASCII quotes "like that"; this will avoid many backslashes in *.po files and is nicer to read
- A sentence ends by a period '.'
- First letter of the first word has capital case.
- We use only one colon ':' between level of information and message.
- There is no space between level of information and the colon.
- level of information + colon = one word.
- There is one space between the colon and the message.
- gettext must be used as much as possible. Add a comment in your code to specify when not using gettext.
Potential translators are encouraged to join their language translation team at the Translation Project and join the language mailing list.
To submit a translation, e.g. for French, write a mail to the robot, precisely as follow:
- To: firstname.lastname@example.org
- Subject: fusionforge-5.3.fr.po (update version if necessary)
- Body: whatever
- Attachment: fr.po.gz (gzip'd otherwise there are encoding issues)
For FusionForge maintainers
At each release, we:
- Make sure the POT file is up-to-date (make -C locale fusionforge.pot, previously src/utils/manage-translations.sh refresh).
- Sync the latest translations (see Info for maintainers).
- Notify mailto:email@example.com of release candidates (RC) tarball URLs so that translators can update their translations before the final release. TODO: check with the coordinator what versioning scheme they support for RCs.
- Notify mailto:firstname.lastname@example.org of the final release tarball URL so he imports the included .pot file at translationproject.org.
Merging from a stable branch to master branch:
- you can ignore any change to the .po files (they are not built against the same version of the .pot file, and you'll sync them once at release time).
- The workflow is that you submit a new .pot when you make the RCs. At that time the translators work in batch. That way you avoid getting the translators to work each time you add a comma, then change your mind and put it back ;)
- If you added a bunch of new strings you can submit a new version even before RCs (e.g. fusionforge-184.108.40.206.pot).
People to check / ping
The following languages were being worked on by:
- French (the Friendly French Cabal)
- Spanish (lcanas, marianoguerra, jfcastro, e1th0r)
- Italian (reinhard)
- German (mirabilos, Nilsius)
- Simplified Chinese (markqiu)
- Polish (pustelnik)
Back to FusionForge