Next: , Previous: Ambiguities, Up: gettext


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 bindtextdomains 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.