/[gentoo]/xml/htdocs/doc/en/guide-localization.xml
Gentoo

Contents of /xml/htdocs/doc/en/guide-localization.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.58 - (show annotations) (download) (as text)
Sun Jul 12 01:06:03 2009 UTC (4 years, 9 months ago) by nightmorph
Branch: MAIN
Changes since 1.57: +4 -4 lines
File MIME type: application/xml
no more whining from bug 273779, dammit

1 <?xml version='1.0' encoding='UTF-8'?>
2 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/guide-localization.xml,v 1.57 2009/06/22 20:09:34 nightmorph Exp $ -->
3 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4
5 <guide link="/doc/en/guide-localization.xml">
6 <title>Gentoo Linux Localization Guide</title>
7 <author title="Author">
8 Alexander Holler
9 </author>
10 <author title="Translator/Editor">
11 <mail link="slucy@uchicago.edu">Steven Lucy</mail>
12 </author>
13 <author title="Editor">
14 <mail link="bennyc@gentoo.org">Benny Chuang</mail>
15 </author>
16 <author title="Editor">
17 <mail link="pylon@gentoo.org">Lars Weiler</mail>
18 </author>
19 <author title="Editor">
20 <mail link="dertobi123@gentoo.org">Tobias Scherbaum</mail>
21 </author>
22 <author title="Editor">
23 <mail link="flammie@gentoo.org">Flammie Pirinen</mail>
24 </author>
25 <author title="Editor">
26 <mail link="nightmorph"/>
27 </author>
28
29 <abstract>
30 This guide should help users localize their Gentoo Linux distribution to any
31 European locale. It uses Germany as a case-study, since it is translated from
32 the German doc. Includes configuration for use of the euro currency symbol.
33 </abstract>
34
35 <version>1.44</version>
36 <date>2009-07-11</date>
37
38 <chapter>
39 <title>Time zone</title>
40 <section>
41 <body>
42
43 <p>
44 In order to keep time properly, you need to select your timezone so that your
45 system knows where it is located. Look for your timezone in
46 <path>/usr/share/zoneinfo</path>. You then set your timezone in
47 <path>/etc/conf.d/clock</path>. Please avoid the
48 <path>/usr/share/zoneinfo/Etc/GMT*</path> timezones as their names do not
49 indicate the expected zones. For instance, <path>GMT-8</path> is in fact GMT+8.
50 </p>
51
52 <pre caption="Setting the timezone information">
53 # <i>ls /usr/share/zoneinfo</i>
54 <comment>(Suppose you want to use Brussels)</comment>
55 <comment>(First copy the proper zone to localtime)</comment>
56 # <i>cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime</i>
57 <comment>(Now specify your timezone)</comment>
58 # <i>nano -w /etc/conf.d/clock</i>
59 TIMEZONE="Europe/Brussels"
60
61 # <i>date</i>
62 Wed Mar 8 00:46:05 CET 2006
63 </pre>
64
65 <note>
66 Make sure that the timezone indicator (in this case "CET")
67 is correct for your area.
68 </note>
69
70 <note>
71 You can set the value of <c>TZ</c> to be everything after the
72 <path>/usr/share/zoneinfo</path> in your shell rc file
73 (<path>.bash_profile</path> for bash) for a user-level setting. In this case
74 <c>TZ="Europe/Berlin"</c>.
75 </note>
76
77 </body>
78 </section>
79 </chapter>
80
81 <chapter>
82 <title>Hardware Clock</title>
83 <section>
84 <body>
85
86 <p>
87 In most Gentoo Linux installations, your hardware clock is set to
88 UTC (or GMT, Greenwich Mean Time) and then your timezone is
89 taken into account to determine the actual, local time. If,
90 for some reason, you need your hardware clock not to be in UTC,
91 you will need to edit <path>/etc/conf.d/clock</path> and change the
92 value of <c>CLOCK</c> from <c>UTC</c> to <c>local</c>.
93 </p>
94
95 <pre caption="local vs. GMT clock">
96 <comment>(recommended:)</comment>
97 CLOCK="UTC"
98 <comment>(or:)</comment>
99 CLOCK="local"
100 </pre>
101
102 </body>
103 </section>
104 </chapter>
105
106 <chapter>
107 <title>Locale system</title>
108 <section>
109 <title>What are locales?</title>
110 <body>
111
112 <p>
113 A Locale is a set of information that most programs use for determining country
114 and language specific settings. The locales and their data are part of the
115 system library and can be found at <path>/usr/share/locale</path> on most
116 systems. A locale name is generally named <c>ab_CD</c> where <c>ab</c> is your
117 two (or three) letter language code (as specified in ISO-639) and <c>CD</c> is
118 your two letter country code (as specified in ISO-3166). Variants are often
119 appended to locale names, e.g. <c>en_GB.UTF-8</c> or <c>de_DE@euro</c>. Please
120 explore <uri link="http://en.wikipedia.org/wiki/Locale">Wikipedia</uri> to read
121 more about locales and related articles.
122 </p>
123
124 </body>
125 </section>
126 <section id="variables">
127 <title>Environment variables for locales</title>
128 <body>
129
130 <p>
131 Locale settings are stored in environment variables. These are typically
132 set in the <path>/etc/env.d/02locale</path> (for system-wide
133 settings) and <path>~/.bashrc</path> (for user-specific settings) file.
134 The variables controlling different aspects of locale settings
135 are given in the table below. All of them
136 take one name of a locale in <c>ab_CD</c> format given above.
137 </p>
138
139 <table>
140 <tr>
141 <th>Variable name</th>
142 <th>Explanation</th>
143 </tr>
144 <tr>
145 <ti>LANG</ti>
146 <ti>
147 Defines all locale settings at once, while allowing further individual
148 customization via the LC_* settings below.
149 </ti>
150 </tr>
151 <tr>
152 <ti>LC_COLLATE</ti>
153 <ti>
154 Define alphabetical ordering of strings. This affects e.g. output of sorted
155 directory listing.
156 </ti>
157 </tr>
158 <tr>
159 <ti>LC_CTYPE</ti>
160 <ti>
161 Define the character handling properties for the system. This determines
162 which characters are seen as part of alphabet, numeric and so on. This also
163 determines the character set used, if applicable.
164 </ti>
165 </tr>
166 <tr>
167 <ti>LC_MESSAGES</ti>
168 <ti>
169 Programs' localizations for applications that use message based localization
170 scheme (majority of Gnu programs, see next chapters for closer information
171 which do, and how to get the programs, that don't, to work).
172 </ti>
173 </tr>
174 <tr>
175 <ti>LC_MONETARY</ti>
176 <ti>Defines currency units and formatting of currency type numeric values.</ti>
177 </tr>
178 <tr>
179 <ti>LC_NUMERIC</ti>
180 <ti>
181 Defines formatting of numeric values which aren't monetary. Affects things
182 such as thousand separator and decimal separator.
183 </ti>
184 </tr>
185 <tr>
186 <ti>LC_TIME</ti>
187 <ti>Defines formatting of dates and times.</ti>
188 </tr>
189 <tr>
190 <ti>LC_PAPER</ti>
191 <ti>Defines default paper size.</ti>
192 </tr>
193 <tr>
194 <ti>LC_ALL</ti>
195 <ti>
196 A special variable for overriding all other settings.
197 </ti>
198 </tr>
199 </table>
200
201 <note>
202 Some programs are written in such a way that they expect traditional English
203 ordering of the alphabet, while some locales, most notably the Estonian one, use
204 a different ordering. Therefore it's recommended to explicitly set LC_COLLATE to C
205 when dealing with system-wide settings.
206 </note>
207
208 <warn>
209 Using LC_ALL is strongly discouraged as it can't be overridden later on. Please
210 use it only when testing and <e>never</e> set it in a startup file.
211 </warn>
212
213 <p>
214 Most typically users only set the LANG variable on the global basis. This
215 example is for a unicode German locale:
216 </p>
217
218 <pre caption="Setting the default system locale in /etc/env.d/02locale">
219 LANG="de_DE.UTF-8"
220 LC_COLLATE="C"
221 </pre>
222
223 <note>
224 Use <c>de_DE@euro</c> as your LANG if you want to use the Euro currency symbol
225 (€).
226 </note>
227
228 <p>
229 It's also possible, and pretty common especially in a more traditional UNIX
230 environment, to leave the global settings unchanged, i.e. in the "<c>C</c>"
231 locale. Users can still specify their preferred locale in their own shell RC
232 file:
233 </p>
234
235 <pre caption="Setting the user locale in ~/.bashrc">
236 export LANG="de_DE.UTF-8"
237 export LC_COLLATE="C"
238 </pre>
239
240 <p>
241 Another way of configuring system is to leave it in the default C locale, but
242 enable UTF-8 character representation at the same time. This option is achieved
243 using the following settings in <path>/etc/env.d/02locale</path>:
244 </p>
245
246 <pre caption="Using traditional C locale while specifying UTF-8">
247 LC_CTYPE=de_DE.UTF-8
248 </pre>
249
250 <p>
251 Using the above snippet, users will be able to see localized file names
252 properly, while not being forced to your preferred language.
253 </p>
254
255 <p>
256 For message based localization to work in programs that support it, you will
257 probably need to have programs compiled with the <c>nls</c> (Native language
258 support) USE flag set. Most of the programs using nls also need the gettext
259 library to extract and use localized messages. Of course, Portage will
260 automatically install it when needed.
261 </p>
262
263 <p>
264 Once you have set the right locale, be sure to update your environment
265 variables to make your system aware of the change:
266 </p>
267
268 <pre caption="Update the environment">
269 <comment>(For system-wide default locale:)</comment>
270 # <i>env-update &amp;&amp; source /etc/profile</i>
271
272 <comment>(For user-specific locale:)</comment>
273 $ <i>source ~/.bashrc</i>
274 </pre>
275
276 <p>
277 After this, you will need to kill your X server by pressing
278 <c>Ctrl-Alt-Backspace</c>, log out, then log in as user.
279 </p>
280
281 <p>
282 Now, verify that the changes have taken effect:
283 </p>
284
285 <pre caption="Verify env changes">
286 $ <i>locale</i>
287 </pre>
288
289 <p>
290 There is also additional localisation variable called LINGUAS, which affects
291 to localisation files that get installed in gettext-based programs, and decides
292 used localisation for some specific software packages, such as
293 <c>kde-base/kde-i18n</c> and <c>app-office/openoffice</c>. The variable
294 takes in <e>space</e>-separated list of language codes, and suggested
295 place to set it is <path>/etc/make.conf</path>:
296 </p>
297
298 <pre caption="Setting LINGUAS in make.conf">
299 # <i>nano -w /etc/make.conf</i>
300 <comment>(Add in the LINGUAS variable. For instance,
301 for German, Finnish and English:)</comment>
302 LINGUAS="de fi en"
303 </pre>
304
305
306 </body>
307 </section>
308 <section>
309 <title>Generating Specific Locales</title>
310 <body>
311
312 <p>
313 If you use a locale that isn't available by default, you should use
314 <c>localedef</c> to generate your locale. For instance:
315 </p>
316
317 <pre caption="Generating a locale using localedef">
318 # <i>localedef -c -i en_US -f ISO-8859-15 en_US.ISO-8859-15</i>
319 </pre>
320
321 <p>
322 After having generated the locale, you can export the LANG variable as you see
323 fit.
324 </p>
325
326 <pre caption="Exporting the LANG variable">
327 # <i>export LANG="en_US.ISO-8859-15"</i>
328 </pre>
329
330 <p>
331 Be sure to update the environment after the change:
332 </p>
333
334 <pre caption="Update the environment">
335 # <i>env-update &amp;&amp; source /etc/profile</i>
336 </pre>
337
338 <p>
339 After this, you will need to kill your X server by pressing
340 <c>Ctrl-Alt-Backspace</c>, log out, then log in as user.
341 </p>
342
343 </body>
344 </section>
345 <section>
346 <title>Generating locales for glibc</title>
347 <body>
348
349 <p>
350 You will probably only use one or maybe two locales on your system. You can
351 specify locales you will need in <path>/etc/locale.gen</path>.
352 </p>
353
354 <pre caption="Adding locales to /etc/locale.gen">
355 en_GB ISO-8859-1
356 en_GB.UTF-8 UTF-8
357 de_DE ISO-8859-1
358 de_DE@euro ISO-8859-15
359 </pre>
360
361 <p>
362 The next step is to run <c>locale-gen</c>. It will generate all the locales you
363 have specified in the <path>/etc/locale.gen</path> file.
364 </p>
365
366 <note>
367 <c>locale-gen</c> is available in <c>glibc-2.3.6-r4</c> and newer. If you have
368 an older version of glibc, you should update it now.
369 </note>
370
371 <p>
372 You can verify that your selected locales are available by running <c>locale
373 -a</c>.
374 </p>
375
376 </body>
377 </section>
378 </chapter>
379
380 <chapter>
381 <title>Keyboard layout for the console</title>
382 <section>
383 <body>
384
385 <p>
386 The keyboard layout used by the console is set in
387 <path>/etc/conf.d/keymaps</path> by the <c>KEYMAP</c> variable.
388 Valid values can be found in
389 <path>/usr/share/keymaps/<c>{arch}</c>/</path>.
390 <path>i386</path> has further subdivisions into layout
391 (<path>qwerty/</path>, <path>azerty/</path>, etc.). Some
392 languages have multiple options, so you may wish to experiment
393 to decide which one fits your needs best.
394 </p>
395
396 <pre caption="Setting the console keymap">
397 KEYMAP="de"
398 KEYMAP="de-latin1"
399 KEYMAP="de-latin1-nodeadkeys"
400 </pre>
401
402 </body>
403 </section>
404 </chapter>
405
406 <chapter>
407 <title>Keyboard layout for the X server</title>
408 <section>
409 <body>
410
411 <p>
412 The keyboard layout to be used by the X server is specified
413 in <path>/etc/X11/xorg.conf</path> by the <c>XkbLayout</c>
414 option.
415 </p>
416
417 <pre caption="Setting the X keymap">
418 Section "InputDevice"
419 Identifier "Keyboard1"
420 ...
421 Option "XkbLayout" "de"
422 #Option "XkbModel" "pc105" <comment>## this is for international keyboards.</comment>
423 # Option "XkbVariant" "nodeadkeys" <comment>## this would be used for xterm input</comment>
424 ...
425 </pre>
426
427 <p>
428 If you have an international keyboard layout, you should set the option
429 <c>XkbModel</c> to <c>pc102</c> or <c>pc105</c>, as this will allow mapping of the
430 additional keys specific to your keyboard.
431 </p>
432
433 <p>
434 Deadkeys allow you to press keys that will not show immediately but will be
435 combined with another letter to produce a single character such as é,è,á,à,
436 etc. Setting <c>XkbVariant</c> to <c>nodeadkeys</c> allows input these special
437 characters into X terminals.
438 </p>
439
440 <p>
441 If you would like to switch between more than one keyboard layout (for example
442 English and Russian), all you have to do is add a few lines to
443 <path>xorg.conf</path> that specify the desired layouts and the shortcut
444 command.
445 </p>
446
447 <pre caption="Switching between two keyboard layouts">
448 Section "InputDevice"
449 Identifier "Keyboard1"
450 ...
451 Option "XkbLayout" "us,ru"
452 Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
453 </pre>
454
455 <p>
456 Here, <c>XkbOptions</c> allows you to toggle between keyboard layouts by simply
457 pressing <c>Alt-Shift</c>. This will also toggle the Scroll Lock light on or
458 off, thanks to the <c>grp_led:scroll</c> option. This is a handy visual
459 indicator of which keyboard layout you are using at the moment.
460 </p>
461
462 </body>
463 </section>
464 </chapter>
465
466 <chapter>
467 <title>KDE</title>
468 <section>
469 <body>
470
471 <p>
472 For KDE you have to install the <c>kde-base/kde-i18n</c> package. Kde-i18n
473 respects <uri link="#variables">LINGUAS variable</uri> described earlier.
474 </p>
475
476 </body>
477 </section>
478 </chapter>
479
480 <chapter>
481 <title>The Euro Symbol for the Console</title>
482 <section>
483 <body>
484
485 <p>
486 In order to get your console to display the Euro symbol, you will need to set
487 <c>CONSOLEFONT</c> in <path>/etc/conf.d/consolefont</path> to a file found in
488 <path>/usr/share/consolefonts/</path> (without the <c>.psfu.gz</c>).
489 <c>lat9w-16</c> has the Euro symbol.
490 </p>
491
492 <pre caption="Setting the console font">
493 CONSOLEFONT="lat9w-16"
494 </pre>
495
496 <p>
497 You should verify that <c>CONSOLEFONT</c> is in the boot runlevel:
498 </p>
499
500 <pre caption="Verify the proper runlevel">
501 # <i>rc-update -v show | grep -i consolefont</i>
502 </pre>
503
504 <p>
505 If no runlevel is displayed for <c>CONSOLEFONT</c>, then add it to the proper level:
506 </p>
507
508 <pre caption="Add consolefont to boot">
509 # <i>rc-update add consolefont boot</i>
510 </pre>
511
512 </body>
513 </section>
514 </chapter>
515
516 <chapter>
517 <title>The Euro Symbol in X</title>
518 <section>
519 <title>Most Applications</title>
520 <body>
521
522 <p>
523 Getting the Euro symbol to work properly in X is a little bit tougher. The
524 first thing you should do is change the <c>fixed</c> and <c>variable</c>
525 definitions in <path>/usr/share/fonts/misc/fonts.alias</path> to end in
526 <c>iso8859-15</c> instead of <c>iso8859-1</c>.
527 </p>
528
529 <pre caption="Setting default X fonts">
530 fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-15
531 variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-15
532 </pre>
533
534 <p>
535 Some applications use their own font, and you will have to tell them separately
536 to use a font with the Euro symbol. You can do this at a user-specific level in
537 <path>.Xdefaults</path> (you can copy this file to <path>/etc/skel/</path> for
538 use by new users), or at a global level for any application with a resource file
539 in <path>/usr/share/X11/app-defaults/</path> (like xterm). In these files you
540 generally have to change an existing line, rather than adding a new one. To
541 change our xterm font, for instance:
542 </p>
543
544 <pre caption="Setting fonts for xterm">
545 <comment>(in your home directory)</comment>
546 $ <i>echo 'XTerm*font: fixed' >> .Xresources </i>
547 $ <i>xrdb -merge .Xresources</i>
548 </pre>
549
550 </body>
551 </section>
552 <section>
553 <title>The Euro symbol in (X)Emacs</title>
554 <body>
555
556 <p>
557 To use the Euro symbol in (X)Emacs, add the following to
558 <path>.Xdefaults</path>:
559 </p>
560
561 <pre caption="setting the font for emacs">
562 Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-15
563 </pre>
564
565 <p>
566 For XEmacs (not plain Emacs), you have to do a little
567 more. In <path>/home/user/.xemacs/init.el</path>, add:
568 </p>
569
570 <pre caption="setting the font for xemacs">
571 (define-key global-map '(EuroSign) '[€])
572 </pre>
573
574 <note>
575 The symbol in the []s is the Euro symbol.
576 </note>
577
578 </body>
579 </section>
580 <section>
581 <title>OpenOffice.Org</title>
582 <body>
583
584 <p>
585 The current stable <c>app-office/openoffice</c> and
586 <c>app-office/openoffice-bin</c> ebuilds support the <uri
587 link="#variables">LINGUAS variable</uri> for selecting installed GUI language
588 packs. To see the status of GUI translation, hyphenation, spell checking and
589 other localisations on your language, please refer to <uri
590 link="http://l10n.openoffice.org/languages.html">OpenOffice.Org localisation
591 web site</uri>.
592 </p>
593
594 </body>
595 </section>
596 </chapter>
597
598 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20