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_ADDRESS (GNU-Erweiterung, seit Glibc 2.2)
    Mit diesem Makro können Sie die Einstellungen ändern, welche die Formate beschreiben (zum Beispiel Postanschriften), die Orte und sonstige Objekte mit geografischem Bezug ändern. Anwendungen, welche diese Informationen benötigen, können nl_langinfo(3) verwenden, um den Inhalt von Nicht-Standardelementen, wie _NL_ADDRESS_COUNTRY_NAME (Landesbezeichnung in der Sprache der jeweiligen Locale) und _NL_ADDRESS_LANG_NAME (Sprachbezeichnung in der Sprache der jeweiligen Locale), welche Zeichenketten wie »Deutschland« und »Deutsch« (für deutsche Spracheinstellungen) zurückliefern, zu ermitteln. Weitere Elementnamen werden in <langinfo.h> aufgelistet.

LC_COLLATE
    This category governs the collation rules used for sorting and regular expressions, including character equivalence classes and multicharacter collating elements. This locale category changes the behavior of the functions strcoll(3) and strxfrm(3), which are used to compare strings in the local alphabet. For example, the German sharp s is sorted as "ss".

LC_CTYPE
    This category determines the interpretation of byte sequences as characters (e.g., single versus multibyte characters), character classifications (e.g., alphabetic or digit), and the behavior of character classes. On glibc systems, this category also determines the character transliteration rules for iconv(1) and iconv(3). It changes the behavior of the character handling and classification functions, such as isupper(3) and toupper(3), and the multibyte character functions such as mblen(3) or wctomb(3).

LC_IDENTIFICATION (GNU-Erweiterung, seit Glibc 2.2)
    Mit diesem Makro ändern Sie Einstellungen der Metadaten für die Locale. Anwendungen, welche diese Informationen benötigen, können nl_langinfo(3) verwenden, um den Inhalt von Nicht-Standardelementen, wie _NL_IDENTIFICATION_TITLE (Titel dieses Locale-Dokuments) und _NL_IDENTIFICATION_TERRITORY (geografisches Territorium, für das dieses Locale-Dokument anwendbar ist), welche Zeichenketten wie »English Locale for the USA« und »USA« zurückliefern, zu ermitteln. Weitere Elementnamen werden in <langinfo.h> aufgelistet.

LC_MONETARY
    This category determines the formatting used for monetary-related numeric values. This changes the information returned by localeconv(3), which describes the way numbers are usually printed, with details such as decimal point versus decimal comma. This information is internally used by the function strfmon(3).

LC_MESSAGES
    This category affects the language in which messages are displayed and what an affirmative or negative answer looks like. The GNU C library contains the gettext(3), ngettext(3), and rpmatch(3) functions to ease the use of this information. The GNU gettext family of functions also obey the environment variable LANGUAGE (containing a colon-separated list of locales) if the category is set to a valid locale other than "C". This category also affects the behavior of catopen(3).

LC_MEASUREMENT (GNU-Erweiterung, seit Glibc 2.2)
    Dies ändert die Einstellungen des Einheitensystems in der Locale (zum Beispiel metrisches oder angloamerikanisches Maßsystem). Anwendungen können nl_langinfo(3) verwenden, um den Inhalt des Nicht-Standard-Elements _NL_MEASUREMENT_MEASUREMENT zu ermitteln, welches einen Zeiger auf ein Zeichen zurückgibt, das entweder den Wert 1 (metrisches Maßsystem) oder 2 (angloamerikanisches Maßsystem) hat.

LC_NAME (GNU-Erweiterung, seit Glibc 2.2)
    Dies ändert die Einstellungen, welche die für Personenadressen verwendeten Formate beschreiben. Anwendungen, welche diese Information benötigen, können nl_langinfo(3) verwenden, um den Inhalt von Nicht-Standard-Elementen, wie _NL_NAME_NAME_MR (allgemeine Anrede für männliche Personen) und _NL_NAME_NAME_MS (allgemeine Anrede für weibliche Personen), zu ermitteln. Diese geben beispielsweise im in der deutschen Locale-Einstellung »Herr« und »Frau« zurück. Weitere Elementnamen sind in <langinfo.h> aufgelistet.

LC_NUMERIC
    This category determines the formatting rules used for nonmonetary numeric values—for example, the thousands separator and the radix character (a period in most English-speaking countries, but a comma in many other regions). It affects functions such as printf(3), scanf(3), and strtod(3). This information can also be read with the localeconv(3) function.

LC_PAPER (GNU-Erweiterung, seit Glibc 2.2)
    Dies ändert die Einstellungen der Abmessungen des Standardpapiers (zum Beispiel US-Letter oder A4). Anwendungen, welche diese Abmessungen benötigen, können nl_langinfo(3) verwenden, um den Inhalt der Nicht-Standard-Elemente _NL_PAPER_WIDTH und _NL_PAPER_HEIGHT zu ermitteln, wobei int-Werte zurückgegeben werden, die die Abmessungen in Millimetern angeben.

LC_TELEPHONE (GNU-Erweiterung, seit Glibc 2.2)
    Dies ändert Einstellungen bezüglich der für Telefoniedienste verwendeten Formate. Anwendungen, welche diese Informationen benötigen, können nl_langinfo(3) zum Ermitteln der Inhalte von Nicht-Standard-Elementen verwenden, wie _NL_TELEPHONE_INT_PREFIX (internationales Präfix, das zum Anrufen von Nummern in diese Locale verwendet wird, was für Deutschland »49« zurückliefert). Weitere Elementnamen sind in <langinfo.h> aufgelistet.

LC_TIME
    Diese Kategorie regelt die für Datums- und Uhrzeitwerte verwandte Formatierung. Beispielsweise verwendet der Großteil von Europa eine 24-Stunden-Uhr während eine 12-Stunden-Uhr in den Vereinigten Staaten verwandt wird. Die Einstellung dieser Kategorie betrifft das Verhalten von Funktionen wie strftime(3) and strptime(3).

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;
};

  POSIX.1-2008-Erweiterungen zum lokalen API
In POSIX.1-2008 ist eine Reihe von Erweiterungen der Locale-API standardisiert, basierend auf Implementationen, die erstmals in der Version 2.3 der GNU C-Bibliothek erschienen sind. Diese Erweiterungen sollen das Problem beheben, dass traditionelle Locale-APIs nur eingeschränkt mit Multithread-Anwendungen und mit Anwendungen, die mehrere Locales verwenden, zusammenarbeiten.

Die Erweiterungen haben die Form neuer Funktionen zum Erstellen und Manipulieren von Locale-Objekten (newlocale(3), freelocale(3), duplocale(3) und uselocale(3)) und diverser neuer Bibliotheksfunktionen mit dem Suffix »_l« (zum Beispiel toupper_l(3)), welche die traditionellen Locale-abhängigen APIS erweitern (zum Beispiel toupper(3)), um die Spezifizierung eines Locale-Objekts zu ermöglichen, das beim Ausführen der Funktion angewendet werden soll.

UMGEBUNGSVARIABLEN
Die folgende Umgebungsvariable wird von newlocale(3) und setlocale(3) verwandt und betrifft daher alle unprivilegierten lokalisierten Programme:

LOCPATH
    A list of pathnames, separated by colons (':'), that should be used to find locale data. If this variable is set, only the individual compiled locale data files from LOCPATH and the system default locale data path are used; any available locale archives are not used (see localedef(1)). The individual compiled locale data files are searched for under subdirectories which depend on the currently used locale. For example, when en_GB.UTF-8 is used for a category, the following subdirectories are searched for, in this order: en_GB.UTF-8, en_GB.utf8, en_GB, en.UTF-8, en.utf8, and en.

DATEIEN

/usr/lib/locale/locale-archive
    Usual default locale archive location.

/usr/lib/locale
    Usual default path for compiled individual locale files.

KONFORM ZU
POSIX.1-2001.

SIEHE AUCH
iconv(1), locale(1), localedef(1), catopen(3), gettext(3), iconv(3), localeconv(3), mbstowcs(3), newlocale(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3), uselocale(3), wcstombs(3), locale(5), charsets(7), unicode(7), utf-8(7)

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

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze <joey@infodrom.org>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> 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>.