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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.49

  ViewVC Help
Powered by ViewVC 1.1.20