Next: Erzeugung und Installation der
Up: Locales und Native Language
Previous: Überblick
Weil die Locales bereits auf der Ebene der Standard-C-Library von einigen wichtigen Funktionen benutzt werden, können prinzipiell alle Programme, die solche Funktionen benutzen, in den oben genannten Kategorien an die jeweiligen nationalen Konventionen angepaßt werden.
Außerdem stehen Locales auch jedem Anwenderprogramm über bestimmte Datenstrukturen direkt zur Verfügung. Damit ist es möglich, ein Programm auch über den von den Bibliotheksfunktionen abgedeckten Bereich hinaus an nationale Konventionen anzupassen.
Damit bestimmte nationale Locales wirksam werden, müssen zuerst die Locales allgemein aktiviert und dann ein spezielles Locale durch entsprechende Umgebungsvariablen ausgewählt werden.Die Aktivierung der Locales muß in jedem Fall durch das Programm selbst geschehen. Das heißt, auch wenn ein Programm mit Funktionen aus der Standard-C-Bibliothek arbeitet, die Locales unterstützen, muß innerhalb des Programms durch einen Aufruf der Funktion setlocale(3) die Verwendung der Locales ausdrücklich angefordert werden. Wenn die Locales nicht aktiviert sind, arbeiten die Bibliotheksfunktionen nach den vom POSIX-Standard definierten internationalen Regeln für C-Programme.
Ob ein bestimmtes Binärprogramm mit Locales arbeitet oder nicht, läßt sich nur durch einen Versuch ermitteln. Bei allen Programmen, zu denen Sie die Sourcen haben, können Sie natürlich die Verwendung von Locales durch entsprechende Ergänzungen im Quelltext aktivieren.
Wenn ein Programm Locales unterstützt und aktiviert, erfolgt die Auswahl eines bestimmten nationalen Regelsatzes für eine oder mehr Kategorien normalerweise durch bestimmte Umgebungsvariablen. Neben den oben genannten Bezeichnungen der 7 verschiedenen Kategorien können noch die Variablen LC_ALL und LANG zur Bestimmung der Regelsätze beitragen.Die Bezeichnung für einen bestimmten nationalen Regelsatz ist installationsabhängig. Im POSIX-Standard sind lediglich die beiden Namen C und POSIX gleichbedeutend für den Standardregelsatz ohne nationale Anpassungen fest vorgeschrieben. In der Praxis werden die Namen für die nationalen Regelsätze aus drei Teilen zusammengesetzt. Der erste Teil bezeichnet die Sprache, der zweite das Territorium und der dritte die Zeichencodierung.
Die Namen aller auf Ihrem System installierten Locales erfahren Sie vom locale-Kommando:
$ locale -a C ISO-8859-1 de_AT.88591 de_BE.88591 de_CH.88591 de_DE.88591 de_LU.88591 it_IT.88591 fr_BE.88591 fr_CA.88591 fr_CH.88591 fr_FR.88591 fr_LU.88591 $ _
Beispielsweise ist de_CH.88591 das Locale für die deutschsprachige Schweiz mit Verwendung der Latin-1-Zeichencodierung, de_DE.88591 ist das entsprechende Locale für die BRD.
Sie können alle Programme, die mit Locales der Kategorie LC_TIME arbeiten, auf den schweizerischen Regelsatz umstellen, indem Sie der Umgebungsvariablen LC_TIME den Wert de_CH.88591 zuweisen. In der bash geschieht das durch das Shellkommando export(1):$ export LC_TIME=de_CH.88591 $ _
Um gleichzeitig einen Regelsatz für alle Kategorien zu bestimmen, kann der Name des gewünschten Satzes in der Umgebungsvariablen LC_ALL oder LANG gespeichert werden. Die Priorität von LC_ALL ist höher als die der einzelnen Kategorien LC_TIME, LC_CTYPE etc., die Priorität von LANG dagegen niedriger als alle anderen. Wenn LC_ALL gesetzt ist, werden die für einzelne Kategorien gesetzten Umgebungsvariablen also ignoriert; wenn LANG gesetzt ist, wird der darin bezeichnete Regelsatz nur verwendet, sofern er nicht durch eine der anderen Variablen näher bestimmt wird.
Wenn Sie das locale-Kommando ohne Schalter aufrufen, erhalten Sie eine Liste aller Kategorien mit den aktuellen Locales.
$ export LANG=de_DE.88591 $ export LC_TIME=de_CH.88591 $ export LC_MESSAGES=C $ locale LANG=de_DE.88591 LC_COLLATE="de_DE.88591" LC_CTYPE="de_DE.88591" LC_MONETARY="de_DE.88591" LC_NUMERIC="de_DE.88591" LC_TIME=de_CH.88591 LC_MESSAGES=C LC_RESPONSE="de_DE.88591" LC_ALL= $ _
Die in Anführungszeichen eingeschlossenen Belegungen sind nicht explizit definiert, sondern aus anderen Umgebungsvariablen, hier LANG, abgeleitet.
Das Linux Anwenderhandbuch