Locale

Aus wiki.archlinux.de

Locales werden in Linux benutzt, um die Sprache des Benutzers festzulegen. Da die locales auch den Zeichensatz der Sprache bestimmen, ist eine korrekte Einstellung dieser, besonders bei Sprachen, die nicht-ASCII Zeichen benutzen, besonders wichtig.

Locales werden nach folgender Syntax benannt:

[language[_territory][.codeset][@modifier]]

In diesem HowTo werden wir ein System so konfigurieren, dass es die de_DE.UTF-8 locale benutzt. Dieses HowTo sowie mit anderen locales zu benutzen, ist allerdings auch ohne Aufwand möglich.

Aktivieren der notwendigen locales

Als erstes müssen die locales, die von dem System unterstützt werden sollen, aktiviert werden. Dazu wird die Datei /etc/locale.gen verwendet; sie beinhaltet eine Liste aller möglichen locales. Durch auskommentieren einzelner Einträge wird diese locale aktiviert.

Da wir ein deutsches, UTF-8 konformes System haben wollen, aktivieren wir zunächst de_DE.UTF-8. Aus Kompatiblitätsgründen sollten allerdings auch alle anderen locales, die mit de_DE beginnen, aktiviert werden, da Programme, die kein Unicode unterstützen, diese locales benötigen. Damit müssen wir mindestens die folgenden locales aktivieren:

de_DE.UTF-8 UTF-8
de_DE    ISO-8859-1
de_DE@euro  ISO-8859-15

Um die Änderungen in der Datei wirksam zu machen, muss als root folgender Befehl ausgeführt werden:

# locale-gen
Generating locales...
  de_DE.UTF-8... done
  de_DE.ISO-8859-1... done
  de_DE.ISO-8859-15@euro... done
Generation complete.

Hinweis: Obwohl es in der Regel nur eine Sprache ist, die du benutzt, ist es in manchen Situationen hilfreich bis notwendig, weitere locales zu aktivieren. Beispielsweise werden Benutzer eines multi-user Systems, die kein Deutsch sprechen, erst zufrieden sein, wenn ihre eigene Sprache vollständig unterstützt wird.

Setzen der system-weiten locale

Welche locale vom System und als Standard-locale verwendet wird, wird in der Datei /etc/locale.conf definiert. Da wir die ISO-8859-1 und die ISO-8859-15 locales lediglich aus (Abwärts-)Kompatiblitätsgründen aktiviert haben, tragen wir hier de_DE.utf-8 ein.

LOCALE="de_DE.utf8"

Die Änderung der system-weite locale wird nach einem Neustart des Computers aktiv.

Setzen der benutzerbasierten locale

Wie schon bemerkt, kann es sein, dass einige Benutzer locales definieren wollen, die nicht mit der system-weiten locale übereinstimmen. Um diesen Fall zu realisieren, muss die Variable LC_ALL in der ~/.bashrc exportiert werden. Zum Beispiel kann ein Benutzer die de_DE.iso88591 locale verwenden, wobei das keinen Vorteil gegenüber der UTF-8 locale bringen würde, sondern sogar eher nachteilig ist.

export LC_ALL=de_DE.iso88591

Diese Änderung der locales werden aktiv, sobald sich der Benutzer neu anmeldet. Allerdings kann man die Änderung auch manuell aktivieren:

$ source ~/.bashrc

Spracheinstellung

Die Sprache, in der die Kommunikation zwischen Computer und Benutzer erfolgt, wird ebenfalls über die locales definiert; namentlich über die Variable LC_LANG. Diese Variable wird ebenfalls benutzerbasiert in der ~/.bashrc gesetzt:

export LC_LANG=en_EN.utf8

Nach dem erneuten Laden der ~/.bashrc sollten alle Programme die gewählte Sprache verwenden, gesetzt den Fall, dass sie diese unterstützen und korrekte Internationalisierungsmethoden verwenden.

Fehlerbehandlung

Woher bekomme ich die Namen der verfügbaren locales?

Die korrekten Namen aller verfügbaren locales können mittels folgenden Befehls abgerufen werden:

$ locale -a

Wie kann ich prüfen, welche locales ich benutze?

Welche locales zur Zeit benutzt werden, kann eingesehen werden, indem man einfach folgenden Befehl eingibt:

$ locale

Mein Terminal unterstützt keine UTF-8 Zeichen

Leider unterstützen einige Terminale noch kein UTF-8. In diesen Fällen solltest du dich für ein anderes Terminal entscheiden.

Liste der Terminals, die UTF-8 unterstützen:

  • gnome-terminal
  • gnustep-terminal
  • mlterm
  • urxvt (rxvt-unicode)
  • xfce-terminal
  • xterm

Hinweis: Diese Liste kann unvollständig sein.

xterm unterstützt keine UTF-8 Zeichen

xterm unterstützt UTF-8 lediglich, wenn es als uxterm oder als xterm -u8 gestartet wird.