Internationalization of the Linux Counter is handled using gettext functionality. This way we are able to create so called portable object files (filename.po) with original strings and, in time, their translations. Using these portable object files, message object files (filename.mo) are created which are used as quick access, binary language files. These are then used by the web pages and scripts to present strings in the right language.
The portable object files are the ones which are sent out for translation. These files have a format which I'll explain below:
"Project-Id-Version: Linux Counter 1.0\n"
"POT-Creation-Date: 2005-01-03 08:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <translate@counter.li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: credits.php:9
msgid "Credits"
msgstr ""
"Project-Id-Version : Linux Counter 1.0\n" : The version of this Project file. Not to be changed by translators
"POT-Creation-Date: 2005-01-03 08:12+0000\n" : Creation date of this file. Not to be changed by translators
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" : Revision date of this file. The date you have finished the translations and sent back this file. To be changed by translators.
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" : Full name and email address of translator(s). To be changed by translators. Please fill in your email address as other translators of your language should have the possibility to ask questions. Email addresses will be kept private
"Language-Team: LANGUAGE <>\n" : Language of translation in this file. To be changed by translator. Please don't change the email address
"MIME-Version: 1.0\n" : Not to be changed
"Content-Type: text/plain; charset=CHARSET\n" : Character set of the translation. Something like iso-8859-1. To be changed by translators to the charset they use when writing the file. If in doubt, and you can, use UTF-8.
"Content-Transfer-Encoding: 8bit\n" : Not to be changed
#: credits.php:9 : Comment with filename(s) and line number(s) were this string appears. Can be useful to find out in what context a string is used. Prepend the filename with http://i18n.counter.li.org to view the content in a browser. Do not change the string after msgid
msgid "Credits" : Original, English string. Not to be changed
msgstr "" : Between the double quotes, the translation in your language of the string in the previous msgid. To be changed by translators.
Translation process
To smoothly handle the flood of translations I'll try to follow the following process:
At this page I'll add a section mentioning the state of a language translation knowing the following states:
Finished + date : The current portable object file is completely translated
In progress + date + translator name : One of our translators is translating the portable object file
Incomplete + date : We have added new strings to the portable object file and somebody needs to offer to translate them or the translator had no time to completely translate the portable objects file. Nobody is currently translating this file
Once a month, when needed, we will make available a new portable objects file with freshly added strings to be translated. This will be announced at the
mailinglist. The state will be changed. (You can subscribe to this list by sending the word subscribe in the body of an email to
)
When you are in the mode to do translations for a language, please announce it at the translate mailinglist and you are send the portable objects file. This file will only be sent at request so we are not sending the file to people who don't want to translate anymore, don't have time for the new round of translations, etc .....
When you have (partly) finished translations and want to see the result, please mail your portable objects file to
. I'll then make sure it will be taken care of. I'll also send a note to the translator when translations are available at the site.
One month after starting with translations for a language I'll personally start asking the translator for the current state of translations. This will then be repeated every month untill finished......
Translation Guidelines
As problems can occur during translations, below I'll try to define some guidelines which have to be followed during translations:
Sometimes sentences contain html tags like <em>. These could have been left out, splitting the sentence to be translated in a couple of parts. To make life easier we didn't split up these sentences and kept in the html tags. Please use them in your translation too.
When strings contain double quotes, please escape those quotes in your translations using a backslash, like this: \"
sometime you'll see a comment # fuzzy. New msgids to be translated are merged into the portable object file using the command msgmerge. This command tries to find out if there already exists a translation for a new msgid. Sometimes it thinks there is, but being in doubt, it adds the comment # fuzzy above the msgid. Normally those translations are WRONG and need attention. After correcting them please remove the #, fuzzy lines from the file.
Another comment to be found is #, c-format. This means the string to be translated has some parameters for the printf command in it. These parameters can be recognized by the %-sign they are prepended with. To keep things working, DON'T CHANGE THE ORDER OF THESE PARAMETERS IN THE TRANSLATED STRING!!
Last but not least, when textual site updates happen, sentences to be translated will change. The msgmerge command will move sentences and their translations which are no longer needed to the end of the portable object file and make them comments. As these translations can still be usefull for you I shall leave them in the file. Please verify those translations and remove them from the file when you don't need them anymore. Otherwise the portable object file will become enormous.
Although I have tried to get out most of the stupidities, almost equal strings and other stuff, it will surely be possible that you find strings which should somehow be handled before translation. Please mail these kind of concerns to
and I'll have a look.