1 |
<?xml version='1.0' encoding='UTF-8'?> |
2 |
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/guide-localization.xml,v 1.61 2010/02/14 20:24:37 nightmorph Exp $ --> |
3 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
4 |
|
5 |
<guide> |
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.46</version> |
36 |
<date>2010-02-14</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 && 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-l10n</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 |
You will probably only use one or maybe two locales on your system. You can |
314 |
specify locales you will need in <path>/etc/locale.gen</path>. |
315 |
</p> |
316 |
|
317 |
<pre caption="Adding locales to /etc/locale.gen"> |
318 |
en_GB ISO-8859-1 |
319 |
en_GB.UTF-8 UTF-8 |
320 |
de_DE ISO-8859-1 |
321 |
de_DE@euro ISO-8859-15 |
322 |
</pre> |
323 |
|
324 |
<p> |
325 |
The next step is to run <c>locale-gen</c>. It will generate all the locales you |
326 |
have specified in the <path>/etc/locale.gen</path> file. |
327 |
</p> |
328 |
|
329 |
<note> |
330 |
<c>locale-gen</c> is available in <c>glibc-2.3.6-r4</c> and newer. If you have |
331 |
an older version of glibc, you should update it now. |
332 |
</note> |
333 |
|
334 |
<p> |
335 |
You can verify that your selected locales are available by running <c>locale |
336 |
-a</c>. |
337 |
</p> |
338 |
|
339 |
</body> |
340 |
</section> |
341 |
</chapter> |
342 |
|
343 |
<chapter> |
344 |
<title>Keyboard layout for the console</title> |
345 |
<section> |
346 |
<body> |
347 |
|
348 |
<p> |
349 |
The keyboard layout used by the console is set in |
350 |
<path>/etc/conf.d/keymaps</path> by the <c>KEYMAP</c> variable. |
351 |
Valid values can be found in |
352 |
<path>/usr/share/keymaps/<c>{arch}</c>/</path>. |
353 |
<path>i386</path> has further subdivisions into layout |
354 |
(<path>qwerty/</path>, <path>azerty/</path>, etc.). Some |
355 |
languages have multiple options, so you may wish to experiment |
356 |
to decide which one fits your needs best. |
357 |
</p> |
358 |
|
359 |
<pre caption="Setting the console keymap"> |
360 |
KEYMAP="de" |
361 |
KEYMAP="de-latin1" |
362 |
KEYMAP="de-latin1-nodeadkeys" |
363 |
</pre> |
364 |
|
365 |
</body> |
366 |
</section> |
367 |
</chapter> |
368 |
|
369 |
<chapter> |
370 |
<title>Keyboard layout for the X server</title> |
371 |
<section> |
372 |
<body> |
373 |
|
374 |
<p> |
375 |
The keyboard layout to be used by the X server is specified |
376 |
in <path>/etc/X11/xorg.conf</path> by the <c>XkbLayout</c> |
377 |
option. |
378 |
</p> |
379 |
|
380 |
<pre caption="Setting the X keymap"> |
381 |
Section "InputDevice" |
382 |
Identifier "Keyboard1" |
383 |
... |
384 |
Option "XkbLayout" "de" |
385 |
#Option "XkbModel" "pc105" <comment>## this is for international keyboards.</comment> |
386 |
# Option "XkbVariant" "nodeadkeys" <comment>## this would be used for xterm input</comment> |
387 |
... |
388 |
</pre> |
389 |
|
390 |
<p> |
391 |
If you have an international keyboard layout, you should set the option |
392 |
<c>XkbModel</c> to <c>pc102</c> or <c>pc105</c>, as this will allow mapping of the |
393 |
additional keys specific to your keyboard. |
394 |
</p> |
395 |
|
396 |
<p> |
397 |
Deadkeys allow you to press keys that will not show immediately but will be |
398 |
combined with another letter to produce a single character such as é,è,á,à, |
399 |
etc. Setting <c>XkbVariant</c> to <c>nodeadkeys</c> allows input these special |
400 |
characters into X terminals. |
401 |
</p> |
402 |
|
403 |
<p> |
404 |
If you would like to switch between more than one keyboard layout (for example |
405 |
English and Russian), all you have to do is add a few lines to |
406 |
<path>xorg.conf</path> that specify the desired layouts and the shortcut |
407 |
command. |
408 |
</p> |
409 |
|
410 |
<pre caption="Switching between two keyboard layouts"> |
411 |
Section "InputDevice" |
412 |
Identifier "Keyboard1" |
413 |
... |
414 |
Option "XkbLayout" "us,ru" |
415 |
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll" |
416 |
</pre> |
417 |
|
418 |
<p> |
419 |
Here, <c>XkbOptions</c> allows you to toggle between keyboard layouts by simply |
420 |
pressing <c>Alt-Shift</c>. This will also toggle the Scroll Lock light on or |
421 |
off, thanks to the <c>grp_led:scroll</c> option. This is a handy visual |
422 |
indicator of which keyboard layout you are using at the moment. |
423 |
</p> |
424 |
|
425 |
</body> |
426 |
</section> |
427 |
</chapter> |
428 |
|
429 |
<chapter> |
430 |
<title>KDE</title> |
431 |
<section> |
432 |
<body> |
433 |
|
434 |
<p> |
435 |
For KDE you have to install the <c>kde-base/kde-l10n</c> and |
436 |
<c>app-office/koffice-l10n</c> packages. These respect the <uri |
437 |
link="#variables">LINGUAS variable</uri> described earlier. |
438 |
</p> |
439 |
|
440 |
</body> |
441 |
</section> |
442 |
</chapter> |
443 |
|
444 |
<chapter> |
445 |
<title>The Euro Symbol for the Console</title> |
446 |
<section> |
447 |
<body> |
448 |
|
449 |
<p> |
450 |
In order to get your console to display the Euro symbol, you will need to set |
451 |
<c>CONSOLEFONT</c> in <path>/etc/conf.d/consolefont</path> to a file found in |
452 |
<path>/usr/share/consolefonts/</path> (without the <c>.psfu.gz</c>). |
453 |
<c>lat9w-16</c> has the Euro symbol. |
454 |
</p> |
455 |
|
456 |
<pre caption="Setting the console font"> |
457 |
CONSOLEFONT="lat9w-16" |
458 |
</pre> |
459 |
|
460 |
<p> |
461 |
You should verify that <c>CONSOLEFONT</c> is in the boot runlevel: |
462 |
</p> |
463 |
|
464 |
<pre caption="Verify the proper runlevel"> |
465 |
# <i>rc-update -v show | grep -i consolefont</i> |
466 |
</pre> |
467 |
|
468 |
<p> |
469 |
If no runlevel is displayed for <c>CONSOLEFONT</c>, then add it to the proper level: |
470 |
</p> |
471 |
|
472 |
<pre caption="Add consolefont to boot"> |
473 |
# <i>rc-update add consolefont boot</i> |
474 |
</pre> |
475 |
|
476 |
</body> |
477 |
</section> |
478 |
</chapter> |
479 |
|
480 |
<chapter> |
481 |
<title>The Euro Symbol in X</title> |
482 |
<section> |
483 |
<title>Most Applications</title> |
484 |
<body> |
485 |
|
486 |
<p> |
487 |
Getting the Euro symbol to work properly in X is a little bit tougher. The |
488 |
first thing you should do is change the <c>fixed</c> and <c>variable</c> |
489 |
definitions in <path>/usr/share/fonts/misc/fonts.alias</path> to end in |
490 |
<c>iso8859-15</c> instead of <c>iso8859-1</c>. |
491 |
</p> |
492 |
|
493 |
<pre caption="Setting default X fonts"> |
494 |
fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-15 |
495 |
variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-15 |
496 |
</pre> |
497 |
|
498 |
<p> |
499 |
Some applications use their own font, and you will have to tell them separately |
500 |
to use a font with the Euro symbol. You can do this at a user-specific level in |
501 |
<path>.Xdefaults</path> (you can copy this file to <path>/etc/skel/</path> for |
502 |
use by new users), or at a global level for any application with a resource file |
503 |
in <path>/usr/share/X11/app-defaults/</path> (like xterm). In these files you |
504 |
generally have to change an existing line, rather than adding a new one. To |
505 |
change our xterm font, for instance: |
506 |
</p> |
507 |
|
508 |
<pre caption="Setting fonts for xterm"> |
509 |
<comment>(in your home directory)</comment> |
510 |
$ <i>echo 'XTerm*font: fixed' >> .Xresources </i> |
511 |
$ <i>xrdb -merge .Xresources</i> |
512 |
</pre> |
513 |
|
514 |
</body> |
515 |
</section> |
516 |
<section> |
517 |
<title>The Euro symbol in (X)Emacs</title> |
518 |
<body> |
519 |
|
520 |
<p> |
521 |
To use the Euro symbol in (X)Emacs, add the following to |
522 |
<path>.Xdefaults</path>: |
523 |
</p> |
524 |
|
525 |
<pre caption="setting the font for emacs"> |
526 |
Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-15 |
527 |
</pre> |
528 |
|
529 |
<p> |
530 |
For XEmacs (not plain Emacs), you have to do a little |
531 |
more. In <path>/home/user/.xemacs/init.el</path>, add: |
532 |
</p> |
533 |
|
534 |
<pre caption="setting the font for xemacs"> |
535 |
(define-key global-map '(EuroSign) '[€]) |
536 |
</pre> |
537 |
|
538 |
<note> |
539 |
The symbol in the []s is the Euro symbol. |
540 |
</note> |
541 |
|
542 |
</body> |
543 |
</section> |
544 |
<section> |
545 |
<title>OpenOffice.Org</title> |
546 |
<body> |
547 |
|
548 |
<p> |
549 |
The current stable <c>app-office/openoffice</c> and |
550 |
<c>app-office/openoffice-bin</c> ebuilds support the <uri |
551 |
link="#variables">LINGUAS variable</uri> for selecting installed GUI language |
552 |
packs. To see the status of GUI translation, hyphenation, spell checking and |
553 |
other localisations on your language, please refer to <uri |
554 |
link="http://l10n.openoffice.org/languages.html">OpenOffice.Org localisation |
555 |
web site</uri>. |
556 |
</p> |
557 |
|
558 |
</body> |
559 |
</section> |
560 |
</chapter> |
561 |
|
562 |
</guide> |