Das System wurde zu einem großen Teil internationalisiert und kann flexibel an lokale Gegebenheiten angepasst werden. Anders ausgedrückt: Die Internationalisierung (I18N) ermöglicht spezielle Lokalisierungen (L10N). Die Abkürzungen I18N und L10N wurden von den ersten und letzten Buchstaben der englischsprachigen Begriffe und der Anzahl der dazwischen stehenden ausgelassenen Buchstaben abgeleitet.
Die Einstellungen werden mit LC_
-Variablen vorgenommen, die in der Datei /etc/sysconfig/language
definiert sind. Dies bezieht sich nicht nur auf die native Sprachunterstützung, sondern auch auf die Kategorien Meldungen (Sprache) Zeichensatz, Sortierreihenfolge, Uhrzeit und Datum, Zahlen und Währung. Diese Kategorien können direkt über eine eigene Variable oder indirekt mit einer Master-Variable in der Datei language
festgelegt werden (weitere Informationen erhalten Sie auf der Manualpage zu locale).
RC_LC_MESSAGES
, RC_LC_CTYPE
, RC_LC_COLLATE
, RC_LC_TIME
, RC_LC_NUMERIC
, RC_LC_MONETARY
Diese Variablen werden ohne das Präfix RC_
an die Shell weitergegeben und stehen für die aufgelisteten Kategorien. Die betreffenden Shell-Profile werden unten aufgeführt. Die aktuelle Einstellung lässt sich mit dem Befehl locale anzeigen.
RC_LC_ALL
Sofern diese Variable festgelegt ist, setzt Sie die Werte der bereits erwähnten Variablen außer Kraft.
RC_LANG
Falls keine der zuvor genannten Variablen festgelegt ist, ist dies das Fallback. Standardmäßig wird nur RC_LANG
festgelegt. Dadurch wird es für die Benutzer einfacher, eigene Werte einzugeben.
ROOT_USES_LANG
Eine Variable, die entweder den Wert yes
oder den Wert no
aufweist. Wenn die Variable auf no
gesetzt ist, funktioniert root
immer in der POSIX-Umgebung.
Die Variablen können über den sysconfig-Editor von YaST (siehe Abschnitt 14.3.1, „Ändern der Systemkonfiguration mithilfe des YaST-Editors "sysconfig"“) festgelegt werden. Der Wert einer solchen Variable enthält den Sprachcode, den Ländercode, die Codierung und einen Modifier. Die einzelnen Komponenten werden durch Sonderzeichen verbunden:
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
Sprach- und Ländercode sollten immer gleichzeitig eingestellt werden. Die Spracheinstellungen entsprechen der Norm ISO 639, die unter http://www.evertype.com/standards/iso639/iso639-en.html und http://www.loc.gov/standards/iso639-2/ verfügbar ist. Die in ISO 3166 aufgeführten Ländercodes sind unter http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html verfügbar.
Es ist nur sinnvoll, Werte festzulegen, für die verwendbare Beschreibungsdateien unter /usr/lib/locale
zu finden sind. Anhand der Dateien in /usr/share/i18n
können mit dem Befehl localedef zusätzliche Beschreibungsdateien erstellt werden. Die Beschreibungsdateien sind Bestandteil des Pakets glibc-i18ndata
. Eine Beschreibungsdatei für en_US.UTF-8
(für Englisch und USA) kann beispielsweise wie folgt erstellt werden:
localedef -i en_US -f UTF-8 en_US.UTF-8
LANG=en_US.UTF-8
Dies ist die Standardeinstellung, wenn während der Installation US-Englisch ausgewählt wurde. Wenn Sie eine andere Sprache ausgewählt haben, wird diese Sprache ebenfalls mit der Zeichencodierung UTF-8 aktiviert.
LANG=en_US.ISO-8859-1
Hiermit wird als Sprache Englisch, als Land die USA und als Zeichensatz ISO-8859-1
festgelegt. In diesem Zeichensatz wird das Eurozeichen nicht unterstützt, es kann jedoch gelegentlich in Programmen nützlich sein, die nicht für die UTF-8
-Unterstützung aktualisiert wurden. Die Zeichenkette, mit der der Zeichensatz definiert wird (in diesem Fall ISO-8859-1
), wird anschließend von Programmen, wie Emacs, ausgewertet.
LANG=en_IE@euro
Im oben genannten Beispiel wird das Eurozeichen explizit in die Spracheinstellung aufgenommen. Streng genommen ist diese Einstellung mittlerweile veraltet, da das Eurozeichen jetzt ebenfalls in UTF-8 enthalten ist. Diese Einstellung ist nur sinnvoll, wenn eine Anwendung UTF-8 nicht unterstützt, ISO-8859-15 jedoch unterstützt.
SuSEconfig liest die Variablen in /etc/sysconfig/language
und speichert die erforderlichen Änderungen in /etc/SuSEconfig/profile
und /etc/SuSEconfig/csh.cshrc
. /etc/SuSEconfig/profile
von /etc/profile
gelesen oder als Quelle verwendet. /etc/SuSEconfig/csh.cshrc
wird von /etc/csh.cshrc
als Quelle verwendet. Auf diese Weise werden die Einstellungen systemweit verfügbar.
Die Benutzer können die Standardeinstellungen des Systems außer Kraft setzen, indem Sie die Datei ~/.bashrc
entsprechend bearbeiten. Wenn Sie die systemübergreifende Einstellung en_US
für Programmmeldungen beispielsweise nicht verwenden möchten, nehmen Sie beispielsweise LC_MESSAGES=es_ES
auf, damit die Meldungen stattdessen auf Spanisch angezeigt werden.
Wenn Sie mit den Locale-Systemstandardwerten nicht zufrieden sind, können Sie die Einstellungen in ~/.i18n
ändern. Achten Sie dabei jedoch auf die Einhaltung der Bash-Scripting-Syntax. Die Einträge in ~/.i18n
setzen die Systemstandardwerte aus /etc/sysconfig/language
außer Kraft. Verwenden Sie dieselben Variablennamen, jedoch ohne die RC_
-Präfixe für den Namespace, also beispielsweise LANG
anstatt RC_LANG
:
LANG=cs_CZ.UTF-8 LC_COLLATE=C
Die Dateien in der Kategorie Meldungen werden generell im entsprechenden Sprachverzeichnis (wie beispielsweise en
) gespeichert, damit ein Fallback vorhanden ist. Wenn Sie für LANG
den Wert en_US
festlegen und in /usr/share/locale/en_US/LC_MESSAGES
keine Meldungsdatei vorhanden ist, wird ein Fallback auf /usr/share/locale/en/LC_MESSAGES
ausgeführt.
Darüber hinaus kann eine Fallback-Kette definiert werden, beispielsweise für Bretonisch zu Französisch oder für Galizisch zu Spanisch oder Portugiesisch:
LANGUAGE="br_FR:fr_FR"
LANGUAGE="gl_ES:es_ES:pt_PT"
Wenn Sie möchten, können Sie die norwegischen Varianten Nynorsk und Bokmål (mit zusätzlichem Fallback auf no
) verwenden:
LANG="nn_NO"
LANGUAGE="nn_NO:nb_NO:no"
oder
LANG="nb_NO"
LANGUAGE="nb_NO:nn_NO:no"
Beachten Sie, das bei Norwegisch auch LC_TIME
anders behandelt wird.
Ein mögliches Problem ist, dass ein Trennzeichen, das zum Trennen von Zifferngruppen verwendet wird, nicht richtig erkannt wird. Dies passiert, wenn LANG
auf einen aus zwei Buchstaben bestehenden Sprachcode wie de
eingestellt ist, die Definitionsdatei, die glibc verwendet, jedoch in /usr/share/lib/de_DE/LC_NUMERIC
gespeichert ist. Daher muss LC_NUMERIC
auf de_DE
gesetzt sein, damit das System die Trennzeichendefinition erkennen kann.
The GNU C Library Reference Manual, Kapitel „Locales and Internationalization“. Dieses Handbuch ist in glibc-info
enthalten.
Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, momentan verfügbar unter http://www.cl.cam.ac.uk/~mgk25/unicode.html.
Unicode-Howto, von Bruno Haible: /usr/share/doc/howto/en/html/Unicode-HOWTO.html
.