complementarycurrency.org

ccDatabase - Translator's Guide

1. Common Guidelines and Recommendations

If you use a simple text editor or a more sophisticated tool like KBabel, do please read the following section as it pertains to both usage means. The intent here is educate what needs to be done to translate your files. A common structure and procedure is needed from and by all to result in coherent translation practices.

1.1 'PO' Files Structure - Header

All files carry relevant info with regards to who the translator(s) were, what encoding the file uses, various date info (creation, revision, etc).

Here's a sample header of a newly created file:
# ccDatabase Translation file.
# complementarycurrency.org
# Stephen DeMeulenaere <stephen@complementarycurrency.org>, 2005.
#
#, fuzzy

msgid ""

msgstr ""

"Project-Id-Version: dFiles\n"

"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"

"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"

"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"

"Language-Team: LANGUAGE <LL@li.org>\n"

"MIME-Version: 1.0\n"

"Content-Type: text/plain; charset=CHARSET\n"

"Content-Transfer-Encoding: ENCODING\n

The lines starting with the '#' character are comments. If you use a translation application (like KBabel), some header fields are automatically created like the "X-Generator:" field. If you are working on a 'PO' file already started by someone else, and you have made significant changes, then just put your name and email in the "Last-Translator:" field.
Always remember to add your name to the translators' list. It's very important to know who had worked on what file plus it will ensure that you will get the credit you deserve for your work.

1.2 Body & Strings

Beyond the header, a 'PO' file is a mere succession of 'msgid' and 'msgstr', preceded sometimes by comments about the exact location of where those strings appear within the source code.
The 'msgid' is already filled with the English string that needs to be translated. What translators need to do is to fill 'msgstr' with the translation of what appears in the 'msgid' string (do NOT delete the double quotes ' " ').

Example:
#: le_systems_admin.php:125
msgid "Country"
msgstr "Pays"

#: le_systems_admin.php:138
msgid "Type of Exchange System"
msgstr ""

#: le_systems_admin.php:141
#, fuzzy
msgid "Medium of exchange"
msgstr "Agent monétaire"

The first 'msgid' is simply translated, the second string is not translated yet (that's why the 'msgstr' is empty). The third string is translated but the translator has put a "#, fuzzy" statement before the block. The "fuzzy" indicator is means by which a translator indicates that he/she are not sure of the term and that a second pass is required. The "#," character is of key importance, its a special character sequence. It is important to note that the "#, fuzzy" statement must come before the 'msgid'.

1.3 Comments within 'msgid' ('_:')

'msgid' strings starting with '_:' indicate a comment to help the translator or to give him/her more information about the message to translate is included. The comment ends with a '\n' (new line) sequence. Do NOT translate the help comment and simply put in the 'msgstr' the translation of only what follows the comment's '\n' (new line) sequence according to what you understood the comment was directing you to do.

Example:
msgid ""
"_: Base\n"
"Root"
msgstr ""
""

1.4 Special keywords within 'msgid' ('Comment=' or 'Name=' or others)

Translate only what comes after the '=' character while keeping the keyword intact (i.e. don't translate or modify "Comment" or "Name"); keep the keywords in English.

Example:
#:
msgid "Name=Vietnamese"
msgstr "Name=Vietnamien
"

1.5 HTML tags within 'msgid'

Some applications use Rich Text features (for paragraphs, colors, bold fonts, etc) to make their strings look nicer. This is accomplished while using HTML tags such as the "<p>" tag for instance. It is very important that the translated message keep all those tags. Translate the text between the tags only. Also, remember that when you are in Right-to-Left input mode (i.e. when your are typing Arabic), the "\n" sequence may look odd - "n\". In either mode, remember that you need to enter first the "\" character and then the "n" irrespective of how they look on screen.

Example:
#:
msgid "<p><b>Online Database of Complementary Currencies Worldwide</b></p>"
msgstr "<p><b>Online Database van Complementaire Valuta Wereldwijd</b></p>"

1.7 UTF-8 Encoding

Please remember to ALWAYS save your files in UTF-8 encoding. Otherwise, it can cause the file to be unreadable by others. UTF-8 is a global all-encompassing encoding (created and maintained by Unicode). UTF-8 enables the user to encode all world's languages as well as various symbols (mathematical ones for instance) in a single file. Before Unicode and UTF-8, it was nearly impossible to exchange documents between localized systems. So it is VERY important that all work be saved in this UTF-8 encoding. If you use a text editor to do your translations, on the other hand, please check that your editor of choice supports UTF-8 and that you are indeed saving your work in that encoding.
If you start to work on a file and you find that it isn't saved in UTF-8 or that it has an encoding problem (displays boxes instead of regular characters for example) immediately stop working on this file and report the issue/problem.

Software Downloads

poEdit is our recommended choice, as it makes it very easy to maintain your translation. A Windows installer is available on the poEdit web site. Alternatively, you may also run Kbabel which can be found in many popular Linux distributions.