1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
4 <title>How to write a GNU libc locale
</title>
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=iso-8859-1">
6 <meta http-equiv=
"Content-Language" content=
"en">
7 <link rel=
"stylesheet" type=
"text/css" href=
"http://i18n.skolelinux.no/stilsett.css" id=
"nn1">
8 <link rel=
"stylesheet" type=
"text/css" href=
"http://i18n.skolelinux.no/utskrift.css" media=
"print" id=
"nn2">
14 <h1>How to write a GNU libc locale
</h1>
21 <div class=
"hovuddel">
23 <p>This is a draft document explaining how to write locale files
24 for GNU libc. It will not go into details, but reference
25 specifications. It will on the other hand mention some of the
26 pitfalls, and try to document the current practice.
</p>
28 <h2>How to choose the locale file name
</h2>
30 <p>Locale names consist of three parts. The language code, the
31 country/region code, and the optional modifier. The format is
32 language_REGION@modifier. The language code is a code from
33 ISO
639. The two-letter code is prefered, but a three letter
34 code is accepted if no two-letter code is available. The
35 country/region code is a code from ISO
3166. If the language
36 or region in question is missing in the ISO standard, one need
37 to get the ISO standard updated before the locale will be
38 included in glibc. If one can't convince the ISO
639
39 maintainers that your language exists (and thus need a
40 language code), the glibc maintainers will refuse to add the
41 locale. In addition, the glibc maintainers seem to refuse
42 "artificial languages" like Esperanto and Lojban, even if they
43 got a ISO
639 code.
</p>
45 <p>Little is known about the requirements for the naming of
46 modifiers. The following modifiers are currently used:
47 abegede, cyrillic, euro and saaho. This might indicate that
48 lower case letters are prefered in modifier names.
</p>
50 <p>It is recommended to follow RFC
3066 when selecting locale
55 <li><a href=
"http://www.unicode.org/onlinedat/countries.html">ISO
58 <li><a href=
"http://www.loc.gov/standards/iso639-2/">ISO
639</a></li>
60 <li><a href=
"http://rfc.sunsite.dk/rfc/rfc3066.html"> RFC
3066
61 - Tags for the Identification of Languages
</a></li>
65 <h2>Category order
</h2>
67 <p>To make it easier to compare locales with each other, I
68 recommend using the same order for the categories in all
69 locales. Any order will do, so I picked the order used in most
70 locales, and decided to recommend this order:
</p>
87 <h2>Reuse when possible
</h2>
89 - "copy" from existing locales if the content should be identical
91 <h2>LD_IDENTIFICATION
</h2>
93 - standard refs in the LD_IDENTIFICATION
95 - quotes around the text
97 - no
<U#
>, use normal ASCII
101 - yes/no expr should have the form ^[yYnN
<extra>], without
0 and
1
102 and without trailing ".*".
104 <h2>Standard documents and specifications
</h2>
106 <h2>Testing the new locale file
</h2>
108 <p>To test a new locale on a test machine, do the
113 <li>Copy the new locale to
114 <tt>/usr/share/i18n/locales/
<em>filename
</em></tt></li>
116 <li>Run
<tt>localedef -i
<em>inputfile
</em> -c -f
117 <em>charset
<em> <em>locale
</em></tt> to generate a
118 binary locale file in
119 <tt>/usr/lib/locale/
<em>locale
</em>/
</tt></li>
121 <li>Test it using LANG=
<em>locale
</em>, for example by
122 running
<tt>date
</tt></li>
126 <p>Example, generating a new
<tt>de_DE@euro
</tt> locale using
127 the ISO-
8859-
15 charset and save it as 'de_DE':
</p>
130 cp de_DE@euro /usr/share/i18n/locales/de_DE@euro
131 localedef -i de_DE@euro -c -f ISO-
8859-
15 de_DE
138 <address><a href=
"mailto:pere@hungry.com">Petter Reinholdtsen
</a></address>
139 <!-- Created: Sun Mar 21 18:14:42 CET 2004 -->
141 Last modified: Mon Aug
9 08:
30:
26 CEST
2004