LOCALE(7)

BEZEICHNUNG
locale - Beschreibung der Unterstützung für mehrere Sprachen

ÜBERSICHT
#include <locale.h>

BESCHREIBUNG
Eine Locale ist ein Satz von kulturellen und sprachlichen Regeln. Die Regeln behandeln Aspekte wie die Sprache für Meldungen, unterschiedliche Zeichensätze, lexikografische Konventionen usw. Um in unterschiedlichen Kulturen eingesetzt werden zu können, muss ein Programm in der Lage sein, die Locale zu ermitteln und deren Regeln anzuwenden.

Die Header-Datei <locale.h> deklariert für diese Aufgabe hilfreiche Datentypen, Funktionen und Makros.

Sie deklariert die Funktionen setlocale(3) für das Setzen der aktuellen Locale und localeconv(3), welche Informationen über Zahlenformate beschafft.

Es gibt unterschiedliche Kategorien für sprachspezifische Informationen, die ein Programm benötigt. Sie sind als Makros deklariert. Wenn sie als erstes Argument für setlocale(3) benutzt werden, ist es möglich, eine dieser Kategorien auf die gewünschte Locale zu setzen:

LC_COLLATE
    Dieses Makro ändert das Verhalten der Funktionen strcoll(3) und strxfrm(3), mit denen Zeichenketten gemäß des lokalen Alphabets verglichen werden. Zum Beispiel wird das deutsche scharfe s (ß) wie »ss« sortiert.

LC_CTYPE
    Dieses Makro ändert das Verhalten von zeichenorientierten und Klassifizierungs-Funktionen wie isupper(3) und toupper(3) sowie Funktionen für die Bearbeitung von Multibyte-Zeichen wie mblen(3) oder wctomb(3).

LC_MONETARY
    ändert die Informationen, die von localeconv(3) zurückgegeben werden. Sie beschreiben das Format, in dem Zahlen normalerweise ausgegeben werden, inklusive Details wie Dezimalpunkt bzw. Dezimalkomma. Diese Informationen werden intern von der Funktion strfmon(3) benutzt.

LC_MESSAGES
    ändert die Sprache, in der Meldungen angezeigt werden und das Aussehen positiver oder negativer Antworten. Um die Anwendung dieser Informationen zu vereinfachen, stellt die GNU-C-Bibliothek die Funktionen gettext(3), ngettext(3) und rpmatch(3) bereit.Die Funktionenfamilie GNU gettext richtet sich nach der Umgebungsvariable LANGUAGE (enthält eine durch Doppelpunkte getrennte Liste von Locales), wenn die Kategorie auf eine gültige, von »C« verschiedene Locale gesetzt ist.

LC_NUMERIC
    ändert die Informationen, die von den Funktionsfamilien printf(3) und scanf(3) benutzt werden, wenn sie die Locale-Einstellungen anwenden sollen. Diese Informationen können ebenfalls mit der Funktion localeconv(3) gelesen werden.

LC_TIME
    ändert das Verhalten der Funktion strftime(3), um die aktuelle Uhrzeit in einem lokal akzeptablen Format anzuzeigen. In Europa wird zum Beispiel meistens eine 24-Stunden-Uhr benutzt, im Gegensatz zur 12-Stunden-Uhr in den Vereinigten Staaten.

LC_ALL
    alles bisherige

Wenn das zweite Argument von setlocale(3) für die vorgegebene Locale eine leere Zeichenkette (empty string) »« ist, wird sie mit den folgenden Schritten ermittelt:

1.  Wenn eine nicht leere Umgebungsvariable LC_ALL existiert, wird der Wert von LC_ALL benutzt.

2.  Wenn eine nicht leere Umgebungsvariable mit dem gleichen Namen wie eine der oben genannten Kategorien existiert, wird ihr Wert für die gleichnamige Kategorie verwendet.

3.  Wenn eine nicht leere Umgebungsvariable LANG existiert, wird ihr Wert benutzt.

Informationen über die lokale Formatierung von Zahlen liefert die Funktion localeconv(3) in der Datenstruktur struct lconv. Sie ist wie folgt deklariert:
struct lconv {
 /* Numerische (nicht währungsbezogene) Informationen  */
  char *decimal_point;       /* Dezimal-Trennzeichen   */
  char *thousands_sep;       /* Tausender-Trennzeichen */
  char *grouping;
  /* 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. */
  /* Die restlichen Felder enthalten Währungsinformationen. */
  /* Die ersten drei Zeichen stellen das Währungszeichen gemäß ISO
     4217 dar.  Das vierte Zeichen ist das Trennzeichen, das fünfte
     Zeichen ist '\0'. */
  char *int_curr_symbol;
  char *currency_symbol;     /* lokales Währungssymbol            */
  char *mon_decimal_point;   /* Dezimal-Trennzeichen              */
  char *mon_thousands_sep;   /* Tausender-Trennzeichen            */
  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;      /* internationale Zeichen für Brüche */
  char frac_digits;          /* lokale Zeichen für Brüche         */
  /* 1 wenn currency_symbol einem positiven Wert vorangestellt wird,
     0 wenn 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 Wert 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;
};

KONFORM ZU
POSIX.1-2001. Die GNU-Gettext-Funktionen werden in LI18NUX2000 beschrieben.

SIEHE AUCH
locale(1), localedef(1), gettext(3), localeconv(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3)

KOLOPHON
Diese Seite ist Teil der Veröffentlichung 3.27 des Projekts Linux-man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler gemeldet werden können, finden sich unter http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.