Locale

Aus wiki.archlinux.de

Locales werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Dies beinhaltet Fehlermeldungen, je nach Programm auch Logeinträge, die Benutzerschnittstelle, oder das GUI. Zudem werden auch Formatierungen (Zahlen, Sortier-Rangfolge, Währungsinformationen, Papiergröße, etc.) durch die Locale bestimmt.

Über die Locale wird zudem der verwendete Zeichensatz festgelegt. Dies ist vor allem bei Sprachen, die nicht ausschließlich, oder gar keine, ASCII-Zeichen verwenden zu berücksichtigen.

Aufbau

Locales bestehen aus bis zu vier Elementen.

Sprache[_Region][.Kodierung][@Modifikator]

Einzig die Angabe zur Sprache ist verbindlich. Region, Kodierung, und Modifikator sind optionale Angaben.

Sprache und Region

Die Sprachdefinitionen werden von der IANA verwaltet (siehe Weblinks). Abweichend zur BCP 47 werden Sprachdefinition und Region durch einen Unterstrich, und nicht durch ein Minuszeichen getrennt.

de_DE
en_US
es_CU

Damit sind bereits gültige Locales vorhanden. Im Beispiel „deutsches Deutsch“, amerikanisches Englisch und kubanisches Spanisch. Eine Liste der verfügbaren Locales stellt zum einen die unveränderte Datei /etc/locale.gen aus dem Paket glibc dar, ist über die Dateien in /usr/share/i18n/locales zu finden, aber auch im Netz zum Beispiel über den Locale Helper (siehe Weblinks) abrufbar.

Kodierung

Neben der eigentlichen Sprach- und Regionsangabe ist die wichtigste Angabe einer Locale die Kodierung. Viele Sprachen benötigen diverse diakritische Zeichen (Umlaut-Punkte im Deutschen, Akut und Gravis im Französischen, Cedille im Türkischen, und dergleichen), die an den Grundbuchstaben angebracht werden (zum Beispiel o + ¨ = ö, oder c + ¸ = ç).

Diese Definitionen, sowie generell die Repräsentation eines Zeichens als Bitfolge, wird über die Zeichenkodierung bestimmt. Diese Angabe wird an die Locale durch einen Punkt getrennt angehängt.

de_DE.utf8
en_US.utf8
es_CU.utf8

Heutzutage wird gemeinhin UTF-8 verwendet. UTF-8 ist die am weitesten verbreitete Kodierung für Unicode-Zeichen. Es ist kompatibel mit ASCII (der 128 Zeichen umfassende ASCII-Zeichensatz wird durch die ersten 128 UTF-8-Zeichen abgebildet), kann variabel bis zu vier Byte je Zeichen verwenden und deckt somit den gesamten Unicode-Zeichenbereich ab.

Modifikator

Der Modifikator bestimmt, dass abweichend der durch die Locale bestimmten Eigenschaften andere Eigenschaften gesetzt werden. Dies ist zum Beispiel von Bedeutung, wenn man sr_RS („Serbisches Serbisch“) verwendet, dessen Eigenschaften dem Kyrillischen folgen.

Mittels des Modifikators latin wird dieses Verhalten geändert, und es werden die gängigen westlichen Eigenschaften im Bezug auf Sortierung, etc. verwendet. Folgende Beispiele verdeutlichen den Einsatz des Modifikators.

sr_RS.utf8@latin
tt_RU@iqtelif
de_DE.utf8@euro  # Sonderfall

Der Sonderfall de_DE.utf8@euro wird zwar an vielen Stellen erwähnt, ist aber selbstaufhebend. Mittels utf8 wird zwar bestimmt, dass die UTF-8-Kodierung benutzt werden soll, durch den Modifikator euro wird gemäß Definition die Kodierung auf ISO-8859-15 gestellt, da dort das Eurozeichen explizit vorhanden ist.

Da das Eurozeichen allerdings auch in Unicode (U+20AC), und damit in UTF-8 vorhanden ist, ist diese Angabe überflüssig und verhindert sogar, den kompletten Unicode-Zeichenvorrat nutzen zu können, da ISO-8859-15 diesen nicht vollständig abdeckt.

Aktivierung und Verwendung

Standardmäßig sind keine Locales aktiviert, und das System greift auf vorhandene Systemstandards zurück. Locales werden in /etc/locale.gen definiert, und mittels locale-gen generiert. Der Wiki-Artikel Arch Linux auf Deutsch stellen erklärt anhand des Auf-Deutsch-Stellens eines Systems die praktische Verwendung.

Alle verfügbaren Locales kann man sich mittels locale -a anzeigen lassen. Alle Angaben dort kann man in entsprechenden Umgebungsvariablen (den LC-Variablen und LANG) verwenden, um die Ausgaben der Programme anzupassen.

Entsprechende Definitionen werden sytemweit in /etc/locale.conf oder accountbezogen ~/.config/locale.conf vorgenommen, und bestehen aus Exports der gewünschten Angaben.

~/.config/locale.conf
export LC_DATE=de_DE.utf8
export LC_NUMERIC=de_DE.utf8
export LC_TIME=de_DE.utf8
export LANG=de_DE.utf8

Hier werden vier Variablen useraccountbezogen gesetzt.

Siehe auch

Weblinks