SUSE LINUX ist internationalisiert und kann flexibel auf lokale Gegebenheiten abgestimmt werden. Die Internationalisierung (I18N) erlaubt spezielle Lokalisierungen (L10N). Die Abkürzungen I18N und L10N stehen für internationalization und localization: jeweils Anfangs- und Endbuchstabe und dazwischen die Anzahl der ausgelassenen Buchstaben.
Die Einstellungen werden über LC_-Variablen
vorgenommen, die in der Datei /etc/sysconfig/language
definiert sind. Dabei geht es nicht nur um die Einstellung der Sprache für
die Programmoberfläche und -meldungen (engl. native language
support), sondern im Einzelnen um die Kategorien für
Nachrichten (Sprache),
Zeichenklassen, Sortierreihenfolge,
Datum und Uhrzeit, Zahlen und
Geld. Jede dieser Kategorien kann entweder gezielt über
eine eigene Variable oder indirekt über eine übergeordnete Variable in der
Datei language festgelegt werden (vgl. die Manualpage
man locale).
RC_LC_MESSAGES,
RC_LC_CTYPE,
RC_LC_COLLATE,
RC_LC_TIME,
RC_LC_NUMERIC,
RC_LC_MONETARY
Diese Variablen werden ohne den
RC_-Vorsatz an die Shell weitergereicht und
bestimmen die oben genannten Kategorien; die betroffenen Dateien werden im
Folgenden aufgezählt.
Die aktuelle Einstellung kann mit dem Befehl locale
abgefragt werden.
RC_LC_ALLDiese Variable überschreibt, falls gesetzt, die Werte der in Punkt 1 genannten Variablen.
RC_LANG
Wenn keine der o. g. Variablen
gesetzt ist, ist diese der Fallback. SUSE LINUX
setzt standardmäßig nur RC_LANG; dadurch kann der
Anwender leichter eigene Werte eintragen.
ROOT_USES_LANG
Eine yes/no-Variable. Ist sie auf
no gesetzt, dann arbeitet root immer in der POSIX-Umgebung.
Die Variablen sind über den YaST Sysconfig-Editor zu setzen. Der Wert einer solchen Variablen setzt sich aus Sprachangabe (language code), Land oder Territorium (engl. country code), Zeichensatz (engl. encoding) und Option (engl. modifier) zusammen. Die einzelnen Angaben werden mit Spezialzeichen verbunden:
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
Bitte setzen Sie die Sprach- und die Länderangabe immer zusammen. Die Angabe
der Sprache folgt dem Standard ISO 639 (http://www.evertype.com/standards/iso639/iso639-en.html und http://www.loc.gov/standards/iso639-2/), die Ländercodes sind in
ISO 3166 festgelegt (siehe
http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html).
Sinnvollerweise dürfen aber nur die Werte gewählt werden, für die
verwendbare Beschreibungsdateien unter /usr/lib/locale
zu finden sind. Weitere Beschreibungsdateien lassen sich mit Hilfe von
localedef aus den Dateien in
/usr/share/i18n erzeugen.
Die Beschreibungsdateien sind Teil des Pakets
glibc-i18ndata.
Eine Beschreibungsdatei für
de_DE@euro.UTF-8 wird erzeugt mit dem Befehl:
localedef -i de_DE@euro -f UTF-8 de_DE@euro.UTF-8
LANG=de_DE.UTF-8
Dies ist die Standardeinstellung, wenn man in deutscher Sprache installiert; installiert man in einer anderen Sprache, wird auch UTF-8 als Zeichen-Kodierung gesetzt, aber die jeweils andere Sprache für das System eingestellt.
LANG=de_DE.ISO-8859-1
So stellt man die deutsche Sprache in Deutschland mit Zeichensatz
ISO-8859-1 ein. Dieser Zeichensatz enthält nicht das
Euro-Zeichen; man benötigt diesen Zeichensatz bisweilen noch, wenn ein
Programm noch nicht an UTF-8 angepasst ist.
Die Angabe des Zeichensatzes (hier ISO-8859-1) wertet
zum Beispiel der Editor Emacs aus.
LANG=de_DE@euro
Das obige Beispiel fügt das Euro-Symbol explizit in eine Spracheinstellung ein. Eigentlich hat sich diese Einstellung inzwischen erübrigt, da UTF-8 auch das Euro-Symbol beinhaltet. Es ist jedoch nützlich, wenn Ihre Anwendung nur ISO-8859-15 unterstützt, nicht jedoch UTF-8.
SuSEconfig liest die Variablen aus
/etc/sysconfig/language aus und schreibt die Angaben
nach /etc/SuSEconfig/profile und
/etc/SuSEconfig/csh.cshrc.
/etc/SuSEconfig/profile wird von
/etc/profile eingelesen
(gesourcet) und
/etc/SuSEconfig/csh.cshrc von
/etc/csh.cshrc. Somit stehen die Einstellungen
systemweit zur Verfügung.
Die Benutzer können die Systemvorgaben in ~/.bashrc
überschreiben. Wenn also die Systemvorgabe de_DE ist,
kann der Benutzer, falls er mit deutschen Programmmeldungen nicht zufrieden
ist, so auf englische Ausgaben umschalten:
LC_MESSAGES=en_US.
Dateien der Kategorie Nachrichten werden in der Regel
nur im Sprachverzeichnis (zum Beispiel de) abgelegt, um
ein Fallback zu haben. Wenn man also LANG auf
de_AT setzt und die Message-Datei unter
/usr/share/locale/de_AT/LC_MESSAGES nicht vorhanden
ist, dann wird auf /usr/share/locale/de/LC_MESSAGES
zurückgegriffen.
Auch kann man mit LANGUAGE eine Fallbackkaskade
festlegen; zum Beispiel für bretonisch → französisch oder für galizisch
→ spanisch → portugiesisch:
LANGUAGE="br_FR:fr_FR"
LANGUAGE="gl_ES:es_ES:pt_PT"
Oder um auf die norwegischen Varianten
nynorsk bzw.
bokmål
auszuweichen (mit zusätzlichem Rückfall auf
no):
LANG="nn_NO"
LANGUAGE="nn_NO:nb_NO:no"
oder
LANG="nb_NO"
LANGUAGE="nb_NO:nn_NO:no"
Bei Norwegisch ist auch zu beachten, dass LC_TIME
unterschiedlich behandelt wird.
Der Tausenderpunkt wird nicht erkannt. Wahrscheinlich steht
LANG beispielweise auf de. Da
die Beschreibung, auf die die glibc zurückgreift, in
/usr/share/lib/de_DE/LC_NUMERIC zu finden ist, muss
beispielsweise LC_NUMERIC auf
de_DE gesetzt werden.
The GNU C Library Reference Manual, Kapitel
„Locales and Internationalization“; enthalten im
glibc-info.
Jochen Hein, unter dem Stichwort „NLS“.
German-Howto von Winfried Trümper file:/usr/share/doc/howto/en/html/German-HOWTO.html.
Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, aktuell unter http://www.cl.cam.ac.uk/~mgk25/unicode.html.
Unicode-Howto von Bruno Haible file:/usr/share/doc/howto/en/html/Unicode-HOWTO.html.