Locale Variablen
Aus Gentoo Linux Wiki
Hallo,
wenn du dich auch schon oft gefragt hast, wie dein System es schafft mit dir die richtige Sprache zu sprechen oder wie eigentlich die Deutsche Lokalisierung funktioniert und du endlich eine Antwort willst, dann lies weiter.
In dem Artikel sollen die locale Variablen beschrieben werden. Es soll aufgezeigt werden, welche Variablen es gibt und was diese tun. Diese Variablen kannst du frei setzen (warum auch nicht) und kannst somit bestimmen welche Sprache die Programme sprechen oder in welchem Format bspw. Zeiten ausgegeben werden.
Inhaltsverzeichnis |
[Bearbeiten] Die Umgebungsvariablen und deren Einfluss
- LC_COLLATE
- Ist fuer den Textvergleich verantworlich. Zum Beispiel ob kleine und grosse Buchstaben gleich sortiert werden koennen. Ein Beispiel: Ob "aaBC bbccc AABB" oder "AABB aaBC bbccc" korrekt sortiert ist.
- LC_CTYPE
- Legt Regeln zur Klassifizierung und Umwandlung von Zeichen fest. Zum Bsp. was genau der Uppercase von "ä" ist oder welche Zeichen alle als Zahlen gelten.
- LC_MESSAGES
- Definiert die Sprache fuer Menues oder Meldungen. Viele Anwendungen lesen von dieser Variable. Aendert man sie, hat man prinzipiell sein System auf eine andere Sprache umgestellt. Ein ls -l /root fuehrt mit de_DE zu der Meldung: "Keine Berechtigung" waehrend es mit en_US zu "Permission denied" kommt.
- LC_MONETARY
- Mit dieser Variable kann man das Format der Waehrung einstellen. So wird zB die Zahl 1234.56 mit en_US zu 1,234.56 und mit de_DE zu 1.234,56
- LC_NUMERIC
- Bestimmt die Dezimaltrennzeichen. Zum Beispiel ob ein Komma oder Punkt zum Einsatz kommt.
- LC_TIME
- Formatiert die Zeit. Ein Datum formatiert mit de_DE gaebe zB "Freitag, der 28 Dezember 1978" waehrend mit nl_NL "vrijdag 22 december 1978" zu erwarten ist.
- LANG
- Falls eine der genannten Variablen keinen Wert hat, wird der Wert dieser Variable genommen. Ist beispielsweise LANG="de_DE" und LC_CTYPE="en_US" und LC_TIME ungesetzt (zB durch unset LC_TIME, dann sehen Programme: LC_CTYPE="en_US" LC_TIME="de_DE".
Ist auch LANG nicht gesetzt wird der ungesetzten Variable der Wert POSIX zugewiesen.
- LC_ALL
- Ist diese Variable gesetzt, werden ALLE Variablen mit diesem Wert belegt.
Laut der gentoo man page werden folgende Variablen nicht verwendet. Bei debian sieht es anders aus.
- LC_PAPER
- Definiert die Abmessung von Papierformaten
- LC_NAME
- Legt Formate fuer Namen fest.
- LC_ADDRESS
- Adress und Ortsagaben
- LC_TELEPHONE
- Formate fuer Telefonnummern
- LC_MEASUREMENT
- Legt das Maßsystem fest. Zum Bsp. Metrisch oder andere.
- LC_IDENTIFICATION
- Metadaten fuer die locale
[Bearbeiten] Ändern der locales
Bei gentoo ergibt es sehr viel Sinn, diese Informationen in eine Datei in /etc/env.d zu speichern. Es wurde sich auf /etc/env.d/02locale geeinigt. Eine solche Datei koennte zum Beispiel wie folgt aussehen
| Datei: /etc/env.d/02locale |
LC_CTYPE="de_DE.utf8" LC_NUMERIC="de_DE.utf8" LC_TIME="de_DE.utf8" LC_COLLATE="de_DE.utf8" LC_MONETARY="de_DE.utf8" LC_MESSAGES="en_US.utf8" |
Man sieht, dass man die einzelnen Variablen durchaus unterschiedlich setzen kann. Das ergibt auch Sinn, denn so kann man ein "deutsches" System benutzen ohne die (Fehler-)Meldungen zu veraendern und sich in Newsgroups und im IRC unbeliebt zu machen ;-)
Du kannst natürlich nur locales einstellen, die du auch in deinem System hast. Falls du eine locale definiert hast, die es nicht gibt, wird ein Standardwert angenommen. Dieser ist POSIX oder C (?)
Nun kannst du deinem System mitteilen, dass es die Aenderungen uebernehmen soll
| Code: System updaten |
env-update && source /etc/profile |
Moechtest du nur kurzzeitig deine locales veraendern eignet sich folgende Methode gut. Man kann natuerlich jede andere Variable als LC_MESSAGES verwenden
| Code: kurzfristig locale aendern |
export LC_MESSAGES="de_DE.utf8" |
[Bearbeiten] Herausfinden von locales
| Code: aktuell eingestellten Umgebungsvariablen |
|
locale |
Um herauszufinden welche locales du ueberhaupt setzen kannst:
| Code: moegliche Umgebungsvariablen |
|
locale -a |
Diese locales sind in /usr/share/i18n/locales/* definiert.
