Next: Additional Localization, Up: Localization [Contents][Index]
A locale is a subset of a user’s environment that indicates the user’s
language and country, and some attendant preferences, such as the
formatting of dates. The units
program attempts to determine
the locale from the POSIX setlocale
function; if this cannot be done,
units
examines the environment
variables LC_CTYPE
and LANG
.
On POSIX systems, a locale is of the form
language_
country, where language is the
two-character code from ISO 639-1 and country is the two-character
code from ISO 3166-1; language is lower case and country is
upper case. For example, the POSIX locale for the United Kingdom is en_GB
.
On systems running Microsoft Windows, the value returned by setlocale
is different from that on POSIX systems; units
attempts to map
the Windows value to a POSIX value by means of a table in the file
locale_map.txt in the same directory as the other data files. The
file includes entries for many combinations of language and country, and
can be extended to include other combinations. The locale_map.txt
file comprises two tab-separated columns; each entry is of the form
Windows-locale POSIX-locale
where POSIX-locale is as described above, and Windows-locale typically spells out both the language and country. For example, the entry for the United States is
English_United States en_US
You can force units
to run in a desired locale by using the
-l option.
In order to create unit definitions for a particular locale you begin
a block of definitions in a unit datafile with ‘!locale’ followed
by a locale name. The ‘!’ must be the first character on the
line. The units
program reads the following
definitions only if the current locale matches. You end the block of
localized units with ‘!endlocale’. Here is an example, which
defines the British gallon.
!locale en_GB gallon 4.54609 liter !endlocale
Next: Additional Localization, Up: Localization [Contents][Index]