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