It is probably not unreasonable to claim that most computer programs are written in some form of English. Certainly many popular programming languages use English as the inspiration for their keywords and a lot of projects with international collaborators will have (possibly implicit) guidelines to use English for comments and displayed messages.
That being said, the majority of people on this planet (and possibly other planets as well) do not understand English, or if they do, prefer another language in day to day life. So GNOME applications wishing to reach an audience as wide as possible need to be translated into other languages. At the time of writing, the latest stable release of GNOME has had at least some portions translated into 55 different languages.
In this document, we will cover the process of internationalisation (commonly abbreviated as i18n). This is the phase in an application's development where the developers incorporate the pieces needed to assist the translators and to subsequently display any message using the translated version for the appropriate locale.
The process of translating any messages in the program into another language is called localisation (or l10n) and is covered elsewhere, such as in [kmaraas].
Internationalising your application consists of two phases. In Section 2, “Preparing the source code for translation”, we work through the process of marking up strings for translation throughout the source code. I will also mention any changes that have to be made to the source code to keep it buildable. In the next part, Section 3, “Incorporating i18n into the package's build infrastructure”, I will talk about changes to the applications build process, such as makefiles and configure.in changes.