gettext: Concepts

1 
1 1.2 I18n, L10n, and Such
1 ========================
1 
1    Two long words appear all the time when we discuss support of native
1 language in programs, and these words have a precise meaning, worth
1 being explained here, once and for all in this document.  The words are
1 _internationalization_ and _localization_.  Many people, tired of
1 writing these long words over and over again, took the habit of writing
1 "i18n" and "l10n" instead, quoting the first and last letter of each
1 word, and replacing the run of intermediate letters by a number merely
1 telling how many such letters there are.  But in this manual, in the
1 sake of clarity, we will patiently write the names in full, each time…
1 
1    By "internationalization", one refers to the operation by which a
1 program, or a set of programs turned into a package, is made aware of
1 and able to support multiple languages.  This is a generalization
1 process, by which the programs are untied from calling only English
1 strings or other English specific habits, and connected to generic ways
1 of doing the same, instead.  Program developers may use various
1 techniques to internationalize their programs.  Some of these have been
11 standardized.  GNU ‘gettext’ offers one of these standards.  ⇒
 Programmers.
1 
1    By "localization", one means the operation by which, in a set of
1 programs already internationalized, one gives the program all needed
1 information so that it can adapt itself to handle its input and output
1 in a fashion which is correct for some native language and cultural
1 habits.  This is a particularisation process, by which generic methods
1 already implemented in an internationalized program are used in specific
1 ways.  The programming environment puts several functions to the
1 programmers disposal which allow this runtime configuration.  The formal
1 description of specific set of cultural habits for some country,
1 together with all associated translations targeted to the same native
1 language, is called the "locale" for this language or country.  Users
1 achieve localization of programs by setting proper values to special
1 environment variables, prior to executing those programs, identifying
1 which locale should be used.
1 
1    In fact, locale message support is only one component of the cultural
1 data that makes up a particular locale.  There are a whole host of
1 routines and functions provided to aid programmers in developing
1 internationalized software and which allow them to access the data
1 stored in a particular locale.  When someone presently refers to a
1 particular locale, they are obviously referring to the data stored
1 within that particular locale.  Similarly, if a programmer is referring
1 to “accessing the locale routines”, they are referring to the complete
1 suite of routines that access all of the locale’s information.
1 
1    One uses the expression "Native Language Support", or merely NLS, for
1 speaking of the overall activity or feature encompassing both
1 internationalization and localization, allowing for multi-lingual
1 interactions in a program.  In a nutshell, one could say that
1 internationalization is the operation by which further localizations are
1 made possible.
1 
1    Also, very roughly said, when it comes to multi-lingual messages,
1 internationalization is usually taken care of by programmers, and
1 localization is usually taken care of by translators.
1