Lokalisierung
Localization (l10n
) und Internationalization (i18n
) sind die beiden Begriffe, die
natürlich hauptsächlich im Desktop-Bereich ihre Relevanz haben.
In Saalfeld/Saale gibt es kein Internet. Ich habe alle folgenden Informationen quasi offline erstellt bzw. angepasst.
Die Sprach-Unterstützung in Linux-Distributionen ist in Teilen recht unterschiedlich geregelt. Zumindest was das Tooling (bereitgestellte Hilfsprogramme der Distribution) betrifft.
In systemd
-Distributionen ist natürlich einiges vereinheitlicht worden.
Lokalisierungen einrichten
Bevor überhaupt mit Sprachen jongliert werden kann, müssen diese im System eingerichtet werden.
Relevante Datei
/etc/locale.gen
In dieser Datei werden alle gewünschten Sprachen festgelegt. Dazu einfach den #
-Kommentar
vor der jeweiligen Sprache/Lokalisierung entfernen. Theoretisch muss heute nur noch
die UTF-8 - Variante freigeschaltet werden, praktisch mache ich zumindest auch noch
die anderen älteren (falls vorhanden).
Relevantes Kommand
locale-gen
Damit werden die Lokalisierungen erzeugt.
Mit dem Kommando locale -a
kann dieses überprüft werden.
Unter RHEL müssen die Sprachpakete extra installiert werden:
dnf install glibc-all-langpacks
Die Variablen
Allen Linux-Systemen gemein ist, dass es eine Reihe von Umgebungsvariablen gibt zur Anpassung:
LANG=
LANGUAGE=
LC_ADDRESS=
LC_COLLATE=
LC_CTYPE=
LC_IDENTIFICATION=
LC_MEASUREMENT=
LC_MESSAGES=
LC_MONETARY=
LC_NAME=
LC_NUMERIC=
LC_PAPER=
LC_TELEPHONE=
LC_TIME=
# Und dazu kommt noch
LC_ALL=
Diese können auf eine der installierten Lokalisierungen (siehe Abschnitt oben) gesetzt
werden. Zum Beispiel: LANG=de_DE.UTF-8
.
Die LANG
-Variable setzt alle anderen Variablen mit - es sei denn eine der LC_
-Variablen
passt einen Bereich an.
Die LC_ALL
-Variable sollte nur zu Debug-Zwecken eingesetzt werden - sie überschreibt
alle obigen Werte. Bis auf die LANGUAGE
-Variable. Diese wurde vom GNU-Projekt hinzugefügt
und definiert Fallback-Sprachen für einige Programme.
Auf meinem Laptop zum Beispiel sehen die Settings so aus:
LANG=en_US.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
LC_PAPER=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
Das Kommando locale
ohne weitere Optionen zeigt alle aktuell gültigen Einstellungen an.
Interessant ist auch manchmal der Abruf der Formatierungen über zum Beispiel
locale -k LC_TIME
# und zum Ausprobieren
LC_TIME=en_US.UTF-8 locale -k LC_TIME
# oder halt
LC_ALL=en_US.UTF-8 locale -k LC_TIME
Relevante Datei
/etc/locale.conf
Unter Debian heißt die Datei immer noch /etc/default/locale
.
In dieser Datei werden die systemweiten Defaults festgelegt. Im Zusammenhang mit dem SSH-Zugang könnte es übrigens Sinn machen, die LANG-Variable dort leer zu setzen. Und alle anderen weglassen. Dann gilt der POSIX-Standard. In der SSH-Konfiguration dann einstellen, dass vorhandene Variablen des SSH-Clients durchgereicht werden.
Benutzer können die Anpassungen zum Beispiel in ihrer .profile
-Datei ablegen und
Zeilen anhängen wie
export LANG=de_DE.UTF-8
# usw
Je nach Distribution greift auch $XDG_CONFIG_HOME/locale.conf
bzw. ~/.config/locale.conf
.
Systemd: localectl
Bis auf die Erstellung/Bereitstellung neuer Lokalisierungen können die
systemweiten Einstellungen mit dem Kommando localectl
gemacht werden.