Lokalisation/HOWTO

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Localization/Guide and the translation is 70% complete.

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎русский • ‎中文(中国大陆)‎

Zeitzonen

Damit die Systemzeit stets gültig ist, ist es notwendig die Zeitzone des aktuellen Standorts im System zu konfigurieren. Die Anleitungen für Systems auf Basis von OpenRC und systemd finden sich im Artikel zu system time.

Das Locale System

Was sind Locales?

Eine Locale ist Satz von Informationen die von den meisten Programmen zum setzen von landes- oder sprachspezifischen Einstellungen genutzt werden. Die Locales und ihre Daten sind Teil der Systembibliotheken und sind meist unter /usr/share/locale gespeichert. Ein Lokalenname folgt dem Schema ab_CD wobei ab ein zwei- oder dreibuchstabiger Sprachcode nach ISO-369 und AB ein Ländercode nach ISO-3166 ist. Varianten von Localen werden durch zusätzliche Endungen unterschieden, etwa en_GB.UTF-8 oder de_DE@euro. Mehr Informationen finden sie in der Wikipedia und den dort angegebenen Quellen.

Umgebungsvariablen für Locale

Die einzelnen Variablen steuern verschiedene Aspekte der Lokalisierung. Jede Variable kann auf einen Localenname wie oben beschrieben gesetzt werden. Die folgende Tabelle fasst die Bedeutung der einzelnen Variablen zusammen:

Name der Variablen Erläuterungen
LANG Setzt alle Localeneinstellungen auf einmal, kann aber durch die LC_* Einstellungen individuell angepasst werden.
LC_COLLATE Steuert die Reihenfolge für alphabetische Sortierung von Strings. Also etwa sortierte Dateiauflistungen.
LC_CTYPE Steuert die Behandlung einzelner Zeichen. Etwa welche Zeichen Teil des Alphabets sind, oder welche als numerische Zeichen zählen. Ebenso wird gesteuert welcher Zeichensatz verwendet wird.
LC_MESSAGES Die Einstellung für Programme die das nachrichten basierte Schema benutzen (die Mehrheit der GNU-Porgramme, in den folgenden Kapiteln finden sich nährer Informationen hierzu).
LC_MONETARY Definiert die Anzeige der Währungseinheiten und ihrer spezifischen Eigenschaften.
LC_NUMERIC Legt die Darstellung der Zahlen fest, wie z.B. das Tausendertrennzeichen und das Komma.
LC_TIME Steuert die Anzeige von Datum und Zeit.
LC_PAPER Legt das Standardpapierformat fest.
LC_ALL Eine besondere Variable die alle anderen Einstellungen überschreibt.
Notiz
Einige Programme erwarten eine Sortierung gemäß des normalen Englischem, während andere Lokales eine andere Sortierung benutzen. Aus diesem Grund wird ausdrücklich empfohlen die Variable LC_COLLATE auf den Wert C zu setzen, um die systemweiten Einstellungen zu beeinflussen.
Warnung
Von der Benutzung der Variablen LC_ALL wird dringend abgeraten, da die automatisch alle anderen LC_* Variablen überschreibt, wobei LANG nicht betroffen ist. Dies bedeutet, dass Änderungen an den anderen Variablen durch LC_ALL überdeckt werden, ausser LC_ALL ist leer (Nullstring). is set to a null string. Es ist wahrscheinlich am besten es nicht in einer Startdatei zu setzen.

Für gewöhnlich setzen die meisten Nutzer die LANG Konfigurationsvariable lediglich global.

Erzeugen bestimmter locales

Die meisten Benutzer werden wahrscheinlich ein oder zwei Locale auf ihrem System benutzen. Wenn weitere locale installiert werden sollen, sind diese in /etc/locale.gen anzugeben.

CODE Hinzufügen weiterer locales in /etc/locale.gen
en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
Notiz
Wenn keine UTF-8 Locale benutzt werden soll, empfiehlt es sich, eine Locale mit dem Zusatz @euro aus /usr/share/i18n/SUPPORTED/ zu benutzen, um die Darstellung des Euro-Symbol (€) möglich zu machen.

Der nächste Schritt ist die Ausführung von locale-gen. Die erzeugt alle in /etc/locale.gen aufgezählten Locale und schreibt diese in das Archiv unter (/usr/lib/locale/locale-archive).

root #locale-gen
 * Generating 4 locales (this might take a while) with 1 jobs
 *  (1/4) Generating en_GB.ISO-8859-1 ...                       [ ok ]
 *  (2/4) Generating en_GB.UTF-8 ...                            [ ok ]
 *  (3/4) Generating de_DE.ISO-8859-1 ...                       [ ok ]
 *  (4/4) Generating de_DE.ISO-8859-15@euro ...                 [ ok ]
 * Generation complete

Die Verfügbarkeit der Locales kann man mit dem Befehl locale -a überprüfen.

user $locale -a
C
POSIX
de_DE
de_DE.iso88591
de_DE.iso885915@euro
de_DE@euro
deutsch
en_GB
en_GB.iso88591
en_GB.utf8
german

Der Inhalt von /usr/lib/locale/locale-archive kann durch den Befehl localedef angezeigt werden.

user $localedef --list-archive

Eine ungefilterte Anzeige bekommt man durch das Kommando strings.

user $strings /usr/lib/locale/locale-archive | less

Setzen einer Locale

OpenRC

Bei der Benutzung von OpenRC werden die Locale Einstellungen in Umgebungsvariablen gespeichert, die systemweit in /etc/env.d/02locale und benutzerspezifisch in ~/.bashrc eingestellt werden. Weitere Einzelheiten finden sich im Artikel zu UTF-8. Die Systemeinstellungen (/etc/env.d/02locale) werden durch eselect locale beeinflusst. Im folgenden Beispiel wird der Wert der Variablen LANG auf den wert C gesetzt:

root #eselect locale list
Available targets for the LANG variable:
  [1]   C 
  [2]   POSIX
  [3]   en_US
  [4]   en_US.iso885915
  [5]   en_US.utf8
  [ ]   (free form)
root #eselect locale set 1

Natürlich ist es auch möglich die Datei von Hand zu editieren und die Sprachvariable zu verändern.

DATEI /etc/env.d/02localeSetzen der default System Locale in /etc/env.d/02locale
LANG="de_DE.UTF-8"
LC_COLLATE="C"

In einer tradidionellen UNIX-Umgebung ist es gebräuchlich, die globalen Einstellungen unverändert auf der C zu lassen. Die Benutzer können ihre Lieblingslocale dann in ihrer eigenen Shell-Umgebung setzen.

DATEI ~/.bashrcSetzen der User Locale
export LANG="de_DE.UTF-8"
export LC_COLLATE="C"

Eine andere Möglichkeit, das System zu konfigurieren, besteht darin, die Standardeinstellung C beizubehalten, aber gleichzeitig die UTF-8-Zeichendarstellung zu aktivieren. Dieses Verhalten wird mit den folgenden Einstellungen in /etc/env.d/02locale erreicht:

CODE Setzen der LC_CTYPE-Variable auf UTF-8
LC_CTYPE=de_DE.UTF-8

Mit dem oben genannten Snippet können Benutzer lokalisierte Dateinamen richtig sehen, während sie nicht gezwungen werden, die ausgewählte Sprache vollständig zu benutzen.

Sobald die richtigen Locale eingerichtet ist, müssen Sie die Umgebungsvariablen aktualisieren, um das System auf die Änderung aufmerksam zu machen.

Für eine systemweite Änderung der Locale:

root #env-update && source /etc/profile

Für eine nutzerspezifische Sprachvariable:

user $source ~/.bashrc

Die nächsten Schriite sind: Beenden des X-Server durch Ctrl+Alt+Backspace, ausloggen und als normaler Benutzer wieder einloggen.

Nun wird überprüft ob die Änderungen erfolgreich waren:

user $locale

Systemd

Bei Systemd kommt das localectl Kommando zum Einsatz. Die verfügbaren Locales listet der folgende Befehl auf:

root #localectl list-locales

Setzen der gewünschten Locale:

root #localectl set-locale LANG=de_DE.utf8

Die Änderung überprüfen:

root #localectl | grep "System Locale"
   System Locale: LANG=de_DE.utf8

Tastaturlayout für die Konsole

OpenRC

Das von der Konsole verwendete Tastaturlayout wird durch die Variable keymap in /etc/conf.d/keymaps gesetzt. Gültige Werte finden Sie unter Template:Pfad. Template:Pfad hat weitere Unterteilungen in das Layout (Template:Pfad, Template:Pfad usw.). Einige Sprachen haben mehrere Möglichkeiten - experimentieren mit den verschiedenen Optionen zu entscheiden, welche passt die Bedürfnisse am besten.

DATEI /etc/conf.d/keymapsSetzen des Tastaturlayout für die Konsole
keymap="de"
#keymap="de-latin1"
#keymap="de-latin1-nodeadkeys"

Systemd

Mit systemd kann das Keymap-Layout, das für die Konsole verwendet wird, mit dem Befehl localectl gesetzt werden. Prüfen Sie zunächst die verfügbaren Keymap-Layouts:

root #localectl list-keymaps

Setzen des gewünschten Keyboard-Layout:

root #localectl set-keymap it

Testen ob der Befehl erfolgreich war:

root #localectl | grep "VC Keymap"
       VC Keymap: it

Tastaturlayout für den X-Server

OpenRC

Das vom X-Server zu verwendende Tastaturlayout wird in der OVariablen XkbLayout in /etc/X11/xorg.conf.d/30-keyboard.conf angegeben. Für Details besuchen Sie den Xorg Guide und den Artikel über Keyboard Layout Switching.

Systemd

Mit Systemd kann das Keymap-Layout, das für die Konsole verwendet wird, mit dem Befehl localectl gesetzt werden. Prüfen Sie zunächst die für X11 verfügbaren Keymap-Layouts:

root #localectl list-x11-keymap-layouts

Setzen des gewünschten Layout:

root #localectl set-x11-keymap it

Testen ob der Befehl erfolgreich war:

root #localectl | grep "X11 Layout"
      X11 Layout: it

NLS

For message based localization to work in programs that support it and have the nls (Native Language Support) USE flag, compile the programs with this flag set. Message strings are installed in /usr/share/locale/<locale>/LC_MESSAGES/<package>.mo files. Most of the programs using NLS also need the gettext library to extract and use localized messages. Of course, Portage will automatically install it when needed.

After enabling the nls USE flag some packages might need to be re-emerged:

root #emerge --ask --changed-use --deep --with-bdeps=y @world

LINGUAS

There is also an additional USE_EXPAND flag called LINGUAS [1], which affects the localization files that get installed in gettext-based programs. The variable takes in space-separated list of language codes, and a suggested place to set it is /etc/portage/make.conf:

root #nano -w /etc/portage/make.conf
## (Add in the LINGUAS variable. For instance, for German, Finnish and English:)
LINGUAS="de fi en"

With LINGUAS="", most ebuilds would install only the packages' default language but none of the LC_MESSAGES files.

A list of installed programs making use of the LINGUAS USE_EXPAND flag and their supported languages can be shown as follows:

user $eix -I -U linguas

A list of LINGUAS values that can be used is provided as /usr/portage/profiles/desc/linguas.desc:

user $grep -i french /usr/portage/profiles/desc/linguas.desc
fr - French locale
fr_CA - French locale for Canada
fr_FR - French locale for France

After setting the LINGUAS USE_EXPAND flag it may be necessary to re-emerge some packages:

root #emerge --ask --changed-use --deep --with-bdeps=y @world
Notiz
LINGUAS as a USE_EXPAND'ed variable is being replaced by the L10N variable (see below). This avoids a conceptual clash with the standard gettext behaviour. After a transition time for packages to be converted, LINGUAS will become a regular environment variable.

L10N

Another USE_EXPAND variable called L10N decides which extra localization support will be installed. This is commonly used for downloads of additional language packs by packages. Similar to LINGUAS, the variable takes a space separated list of language tags, and it can be set in /etc/portage/make.conf:

root #nano -w /etc/portage/make.conf
## (Add in the L10N variable. For instance, for German and Brazilian Portuguese:)
L10N="de pt-BR"

To set it per-package, edit /etc/portage/package.use and prefix the requested language packs with "l10n_", as shown in the next example:

DATEI /etc/portage/package.use
app-text/aspell l10n_de l10n_pt_BR

Note that while the common two letter language codes (like de or fr) are identical in LINGUAS and L10N, more complex entries have a different syntax because L10N uses IETF language tags (aka BCP 47). For example, pt_BR and sr@latin in LINGUAS become pt-BR and sr-Latn in L10N, respectively.

A list of L10N values that can be used is provided as /usr/portage/profiles/desc/l10n.desc:

user $grep -i portuguese /usr/portage/profiles/desc/l10n.desc
pt - Portuguese
pt-BR - Portuguese (Brazil)
pt-PT - Portuguese (Portugal)

After setting the L10N USE_EXPAND variable it may be necessary to re-emerge some packages:

root #emerge --ask --changed-use --deep --with-bdeps=y @world

See also

External resources

References

  1. LINGUAS in Gentoo Development Guide

This article is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Alexander Holler, Steven Lucy, Benny Chuang, Lars Weiler, Tobias Scherbaum, Flammie Pirinen, nightmorph, klondike
They are listed here as the Wiki history does not allow for any external attribution. If you edit the Wiki article, please do not add yourself here; your contributions are recorded on the history page.