Internationalization and Localization#

Internationalization is the process of preparing an application for displaying content in languages and formats specifically to the audience. Developers and template authors usually internationalize the application. "i18n" is shorthand for "internationalization" (the letter "I", a run of 18 letters, the letter "N").

Localization is the process of writing the translations of text and local formats for an application that has already been internationalized. Formats include dates, times, numbers, time zones, units of measure, and currency. Translators usually localize the application. "l10n" is shorthand for "localization" (the letter "L", a run of 10 letters, the letter "N").

OpenSPP fully supports internationalization and localization.

See also

Wikipedia article Internationalization and localization

Common concepts#

When you internationalize and localize a OpenSPP application, there are some common concepts used throughout these processes.

Terms#

The following terms are used in this documentation.

locale

A locale is an identifier, such as a language tag, for a specific set of cultural preferences for some country, together with all associated translations targeted to the same native language.

language tag

A language tag is a string used as an identifier for a language. A language tag may have one or more subtags. The basic form of a language tag is LANGUAGE-[SUBTAG].

.po

Portable Object (PO) file. The message file format used by the gettext translation system. See https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/PO-Files.html.

.pot

Portable Object (PO) template file, not yet oriented towards any particular language.

.mo

Machine Object file. The binary message file compiled from the .po message file.

Locale and language tag conventions#

OpenSPP uses certain conventions for its locales and language tags.

  • When identifying a language only, use two lowercase letters. Examples: en, de.

  • When identifying a language and a country, use two lowercase letters, an underscore (_), and two uppercase letters. Examples: en_GB, pt_BR.

General procedure#

TODO