1.3. The internationalisation and localisation process

According to Introduction to i18n from Tomohiro KUBOTA: "I18N (internationalisation) 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 (localisation) means implementation of a specific language for an already internationalised software."

Internationalisation is the process that makes a program capable of providing a computing environment for the user adapted to his/her own language, currency, date and time formats, etc. Most users of a similar background will share an environment, and this means there a number of common environments that a program has to support. The term internationalisation is often abbreviated to i18n.

Even if a piece of software is ready to use different environments, that does not mean that it can immediately do so, since specialists (typically people who use that environment) need to adapt it so that it can be used in a language a user is familiar with. This process of adapting the software to a specific environment is called localisation. Localisation is typically focused on the translation of each and every message that the program can handle (and implements in the user interface, such as menus, buttons, error messages and tooltips). Localisation is typically abbreviated to l10n.

L10n and I18n are closely related, but the issues in achieving each of them are very different. It's not really difficult to allow the program to change the language in which texts are displayed, based on user settings, but it is very time consuming indeed, actually to translate all its messages. On the other hand, setting the character encoding may be trivial, but adapting the code to use several character encodings can be a challenging and complex task.

This document will not try to explain all the different issues facing localisation and associated with the representation of different code pages. However, it's important to recognize that this is a key issue, especially for environments that do not use the Western code pages (ASCII character set and ISO-8859), such as Asian and Indic scripts and languages with combined diacritics. We need to bear in mind that the majority of potential users world-wide use languages which are not covered by those two very limited code pages. UTF-8 support is a crucial step in internationalization.