Experienced programmers' topics

Determinism and responsibility

It is very important for the software development process, that the programmer decides, what gets translated, and what doesn't. Also, it is important for the programmer to ensure, that the translator cannot break the application, no matter how bad the translations are made.

GNU gettext is based on function calls (gettext, dgettext etc.), comments to the translator and a proper localization release procedure.

The system doesn't translate anything that isn't put through the dgettext() function in a way or the other. The programmer fully controls what gets translated, and what doesn't, and has the responsibility to ensure, that everything that gets translated, can be translated to virtually anything without breaking the program. For instance, if the caption of a label on a form is made translatable by the programmer, the translator can only change the look of the label. But if the component name of a label would be translatable, the translator could break the program by translating the name of a label to something that is already the name of another component.

In order to get a program translated, the programmer must provide information to the translator about what gets translated and where to find it. He also needs to ensure, that the texts are unambigious, that one msgid cannot be translated into two different things in another language. Since it may not always be clear to the translator, in which context a message is used, the programmer can provide comments to the translator, even access to the source code locations, if the translator is able to read source code. The comments should also make the translator able to run the program with his/her translations, and find the place where a particular text can be found inside the program.

The translator is often also a beta-tester for a specific language. The translator is often the only one that is able to control the program while running in the other language, and is often also the only one internally in the organization that is capable to see if labels are put correctly, translations are made correctly etc. GNU gettext helps out here by making the translator able to apply his or her translation without involving the programmer.