gettext: Locating Catalogs

 
 11.2.3 Locating Message Catalog Files
 -------------------------------------
 
    Because many different languages for many different packages have to
 be stored we need some way to add these information to file message
 catalog files.  The way usually used in Unix environments is have this
 encoding in the file name.  This is also done here.  The directory name
 given in ‘bindtextdomain’s second argument (or the default directory),
 followed by the name of the locale, the locale category, and the domain
 name are concatenated:
 
      DIR_NAME/LOCALE/LC_CATEGORY/DOMAIN_NAME.mo
 
    The default value for DIR_NAME is system specific.  For the GNU
 library, and for packages adhering to its conventions, it’s:
      /usr/local/share/locale
 
 LOCALE is the name of the locale category which is designated by
 ‘LC_CATEGORY’.  For ‘gettext’ and ‘dgettext’ this ‘LC_CATEGORY’ is
 always ‘LC_MESSAGES’.(1)  The name of the locale category is determined
 through ‘setlocale (LC_CATEGORY, NULL)’.  (2) When using the function
 ‘dcgettext’, you can specify the locale category through the third
 argument.
 
    ---------- Footnotes ----------
 
    (1) Some system, e.g. mingw, don’t have ‘LC_MESSAGES’.  Here we use a
 more or less arbitrary value for it, namely 1729, the smallest positive
 integer which can be represented in two different ways as the sum of two
 cubes.
 
    (2) When the system does not support ‘setlocale’ its behavior in
 setting the locale values is simulated by looking at the environment
 variables.