The internationalization of software (abbreviated as i18n) is to prepare its adaptation to different languages and cultures. Unlike regionalization, which requires especially language skills (translation), internationalization is essentially a technical work of programmers. The goal is to produce a program that can be immediately deployed in different languages by simply adding a new translation file.
The following C program is not localized:
printf(“Fatal error: %s\n“, msg);
To translate the message, you should edit the source code and modify the string.
For cons, the next version of the program is located, with the gettext library. The program will search its files regionalization (localization), a character string corresponding to “Fatal error:% s”, for the language of the current user:
printf(gettext(“Fatal error: %s\n“), msg);
gettext uses as key (index in localization files) the default version of the message. Other programming environments can be used, for example, a number (like was in the case of Mac OS), or rely on a dynamic configuration parameter (eg I18n.translate method of a Ruby on Rails app).
Internationalization and localization
Internationalization is a prerequisite of localization. It is to separate, in the source code of a program, which is independent of the language and culture of which is dependent (usually in files called translation tables). But internationalization does not require a work on text messages. It is also sometimes possible to change the color codes (whose meaning can change depending on the crop), graphics (including the names of icons, some icons may also contain the written text to be translated), the format of dates or numbers, the writing direction (from right to left in Arabic, for example), the size of the graphic elements (German text is longer than in English, which can modify layout, etc.) to the way of granting plural words after a number (we will write “0 tâche fille” in French, but “0 children processes” in English).
Internationalization is the set of technical mechanisms that allow the end user to choose the language of its interface and achieve sustainable results, linguistically speaking. However, it may not be sufficient to address “any language” that the program uses a limited set of characters, or some special fonts, or because the user does not have the right keyboard for entering data in one or another language. Migration or the inclusion of a wider set of characters may be needed especially to complete internationalization. Extensive games are offered, first in the ISO-2022 family, and secondly as unicode, especially with UTF-8 / UTF-16. This step, more or less independent of internationalization (it can be done at the same time, before or after) is called “multilingualization.” The terms are often written in abbreviated form i18n (18 numer refers to the number between the first i and last n letters of the word “internationalization“, an use invented by Digital Equipment Corporation in the years 1970 and 1980) and L10n for the word “localization” due to the length of the words.
Some companies, such as IBM and Sun Microsystems, use the term “globalization” to define the combination of internationalization and localization.
Microsoft defines internationalization as a combination of the expression “World-Readiness”‘ and localization. World-readiness is a task for the developer, and allows to use a product with many characters and writing many cultures (globalization) while separating the user interface in a localized resource file ( abbreviated L12y).
This concept is also known as “NLS” (“National Language Support” or “Native Language Support”)