Chapter 8. Internationalization and Translations

Table of Contents

8.1. How translations are handled within Debian
8.2. I18N & L10N FAQ for maintainers
8.2.1. How to get a given text translated
8.2.2. How to get a given translation reviewed
8.2.3. How to get a given translation updated
8.2.4. How to handle a bug report concerning a translation
8.3. I18N & L10N FAQ for translators
8.3.1. How to help the translation effort
8.3.2. How to provide a translation for inclusion in a package
8.4. Best current practice concerning l10n

Debian supports an ever-increasing number of natural languages. Even if you are a native English speaker and do not speak any other language, it is part of your duty as a maintainer to be aware of issues of internationalization (abbreviated i18n because there are 18 letters between the 'i' and the 'n' in internationalization). Therefore, even if you are ok with English-only programs, you should read most of this chapter.

According to Introduction to i18n from Tomohiro KUBOTA, I18N (internationalization) means modification of a software or related technologies so that a software can potentially handle multiple languages, customs, and so on in the world, while L10N (localization) means implementation of a specific language for an already internationalized software.

l10n and i18n are interconnected, but the difficulties related to each of them are very different. It's not really difficult to allow a program to change the language in which texts are displayed based on user settings, but it is very time consuming to actually translate these messages. On the other hand, setting the character encoding is trivial, but adapting the code to use several character encodings is a really hard problem.

Setting aside the i18n problems, where no general guideline can be given, there is actually no central infrastructure for l10n within Debian which could be compared to the buildd mechanism for porting. So most of the work has to be done manually.

Handling translation of the texts contained in a package is still a manual task, and the process depends on the kind of text you want to see translated.

For program messages, the gettext infrastructure is used most of the time. Most of the time, the translation is handled upstream within projects like the Free Translation Project, the Gnome translation Project or the KDE one. The only centralized resource within Debian is the Central Debian translation statistics, where you can find some statistics about the translation files found in the actual packages, but no real infrastructure to ease the translation process.

An effort to translate the package descriptions started long ago, even if very little support is offered by the tools to actually use them (i.e., only APT can use them, when configured correctly). Maintainers don't need to do anything special to support translated package descriptions; translators should use the Debian Description Translation Project (DDTP).

For debconf templates, maintainers should use the po-debconf package to ease the work of translators, who could use the DDTP to do their work (but the French and Brazilian teams don't). Some statistics can be found both on the DDTP site (about what is actually translated), and on the Central Debian translation statistics site (about what is integrated in the packages).

For web pages, each l10n team has access to the relevant VCS, and the statistics are available from the Central Debian translation statistics site.

For general documentation about Debian, the process is more or less the same as for the web pages (the translators have access to the VCS), but there are no statistics pages.

For package-specific documentation (man pages, info documents, other formats), almost everything remains to be done.

Most notably, the KDE project handles translation of its documentation in the same way as its program messages.

There is an effort to handle Debian-specific man pages within a specific VCS repository.

This is a list of problems that maintainers may face concerning i18n and l10n. While reading this, keep in mind that there is no real consensus on these points within Debian, and that this is only advice. If you have a better idea for a given problem, or if you disagree on some points, feel free to provide your feedback, so that this document can be enhanced.

While reading this, please keep in mind that there is no general procedure within Debian concerning these points, and that in any case, you should collaborate with your team and the package maintainer.

  • As a maintainer, never edit the translations in any way (even to reformat the layout) without asking on the corresponding l10n mailing list. You risk for example breaking the encoding of the file by doing so. Moreover, what you consider an error can be right (or even needed) in the given language.

  • As a translator, if you find an error in the original text, make sure to report it. Translators are often the most attentive readers of a given text, and if they don't report the errors they find, nobody will.

  • In any case, remember that the major issue with l10n is that it requires several people to cooperate, and that it is very easy to start a flamewar about small problems because of misunderstandings. So if you have problems with your interlocutor, ask for help on the corresponding l10n mailing list, on debian-i18n, or even on debian-devel (but beware, l10n discussions very often become flamewars on that list :)

  • In any case, cooperation can only be achieved with mutual respect.