LOCALE(7) Verschiedenes LOCALE(7)
locale - Beschreibung der Mehrsprachen-Unterstützung
#include <locale.h>
Eine Lokale ist ein Satz von Sprach- und kultureller Regeln. Sie
behandeln Aspekte wie Sprache für Meldungen, unterschiedliche
Zeichensätze, lexikografische Konventionen etc. Ein Programm muss in
der Lage sein, die Locale zu ermitteln und entsprechen zu reagieren, um
in unterschiedlichen Kulturen eingesetzt werden zu können.
Die Header-Datei <locale.h> deklariert Datentypen, Funktionen und
Makros, die für diese Aufgabe hilfreich sind.
Die Funktionen, die deklariert werden, sind setlocale(), um die
aktuelle Locale zu setzen und localeconv(), um Informationen über
Zahlenformate zu erhalten.
Es gibt unterschiedliche Kategorien für lokale Informationen, die ein
Programm benötigt. Sie sind als Makros deklariert. Wenn sie als
erstes Argument für setlocale() benutzt werden, ist es möglich, eine
dieser auf die gewünschte Locale zu setzen:
LC_COLLATE
Dieses wird benutzt, um das Verhalten der Funktionen strcoll()
und strxfrm() zu beeinflussen, die benutzt werden, um Zeichen‐
ketten gemäà des lokalen Alphabets zu vergleichen. Zum
Beispiel wird das Deutsche scharfe à wie "ss" sortiert.
LC_CTYPE
Dieses ändert das Verhalten von Zeichenorientierten und -Klas‐
sifizierungs-Funktionen wie isupper() und toupper() sowie
multi-byte Zeichen-Funktionen wie mblen() oder wctomb().
LC_MONETARY
ändert die Informationen, die von localeconv() zurückgegeben
werden. Sie beschreiben das Format, wie Zahlen normalerweise
ausgegeben werden, inklusive Details wie Dezimalpunkt bzw. Dezi‐
malkomma. Dieser Information wird intern von der Funktion strf‐
mon() benutzt.
LC_MESSAGES
ändert die Sprache, in der Meldungen angezeigt werden, und wie
eine positive oder negative Antwort aussieht. Die GNU C-Biblio‐
thek beinhaltet die Funktion rpmatch(), um diese Informationen
anzuwenden.
LC_NUMERIC
"andert die Informationen, die von den Funktionsfamilien
printf() und scanf() benutzt werden, wenn sie angewiesen werden,
Locale-Einstellungen zu benutzen. Diese Informationen können
ebenfalls mit der Funktion localeconv() gelesen werden.
LC_TIME
ändert das Verhalten der Funktion strftime(), um die aktuelle
Uhrzeit in einem lokal angebrachten Format anzuzeigen. In
Europa wird zum Beispiel meistens eine 24-Stunden Uhr benutzt,
im Gegensatz zur 12-Stunden Uhr in Amerika.
LC_ALL Alles bisherige.
Wenn das zweite Argument von setlocale() für die vorgegebene Locale
ein leerer String "" ist, wird sie anhand folgender Schritte ermittelt:
1. Wenn eine nichtleere Umgebungsvariable LC_ALL existiert, wird
der Wert von LC_ALL benutzt.
2. Wenn eine nichtleere Umgebungsvariable mit dem gleichen Namen
wie eine der oben genannten Kategorien existiert, wird ihr Wert
für die gleichnamige Kategorie verwendet.
3. Wenn eine nichtleere Umgebungsvariable namens LANG existiert,
wird ihr Wert benutzt.
Informationen über Formatierung von Zahlen wird in einer Datenstruktur
gespeichert, die von der Routine localeconv() zurückgegeben wird. Sie
ist wie folgt deklariert:
struct lconv
{
/* Numerische (nicht finanzielle) Informationen. ----- */
char *decimal_point; /* Dezimaltrennzeichen. */
char *thousands_sep; /* Tausender-Begrenzer. */
/* Jedes Element entspricht der Anzahl von Ziffern in jeder Gruppe.
Elemente mit einem höheren Index stehen weiter links. Ein
Element mit dem Wert CHAR_MAX bedeutet, dass keine weitere
Gruppierung mehr stattfindet. Ein Element mit einem Wert von 0
bedeutet, dass das vorherige Element für alle Gruppen weiter links
benutzt wird. */
char *grouping;
/* Finanz-Informationen. ---------------------------- */
/* Die ersten drei Zeichen stellen das Währungszeichen gemäà ISO
4217 dar. Das vierte Zeichen ist ein Trennungszeichen, das
fünfte Zeichen ist ’ ’. */
char *int_curr_symbol;
char *currency_symbol; /* Lokales Währungssymbol. */
char *mon_decimal_point; /* Dezimaltrennzeichen. */
char *mon_thousands_sep; /* Tausender-Begrenzer. */
char *mon_grouping; /* Wie das ‘grouping’-Element (oben). */
char *positive_sign; /* Vorzeichen für positive Werte. */
char *negative_sign; /* Vorzeichen für negative Werte. */
char int_frac_digits; /* Int’l fractional digits. */
char frac_digits; /* Local fractional digits. */
/* 1 wenn currency_symbol einem positiven Wert vorangestellt wird,
0 precedes es nachgestellt wird */
char p_cs_precedes;
/* 1 wenn ein Leerzeichen currency_symbol von einem positiven Wert trennt. */
char p_sep_by_space;
/* 1 wenn currency_symbol einem negativen vorangestellt wird,
0 wenn es nachgestellt wird */
char n_cs_precedes;
/* 1 wenn ein Leerzeichen currency_symbol von einem negativen Wert trennt. */
char n_sep_by_space;
/* Positionen positiver und negativer Vorzeichen:
0 Klammern umgeben die Menge und currency_symbol.
1 Das Vorzeichen wird der Menge und currency_symbol vorangestellt.
2 Das Vorzeichen wird der Menge und currency_symbol nachgestellt.
3 Das Vorzeichen wird currency_symbol unmittelbar vorangestellt.
4 Das Vorzeichen wird currency_symbol unmittelbar nachgestellt. */
char p_sign_posn;
char n_sign_posn;
};
POSIX.1
setlocale(3), localeconv(3), locale(1), localedef(1), rpmatch(3), strf‐
mon(3), strcoll(3), strxfrm(3), strftime(3).
Linux 7. Februar 1999 LOCALE(7)