1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
|
.\" (c) 1999 by Martin Schulze <joey@infodrom.north.de>
.\"
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date. The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein. The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\"
.\" Translated Sun Feb 7, 1999 by Martin Schulze <joey@infodrom.north.de>
.\" Translated into German by Martin Schulze (joey@finlandia.Infodrom.North.DE)
.\"
.TH LOCALE 7 "7. Februar 1999" "Linux" "Verschiedenes"
.SH BEZEICHNUNG
locale \- Beschreibung der Mehrsprachen-Unterstützung
.SH "ÜBERSICHT"
.nf
.B #include <locale.h>
.fi
.SH BESCHREIBUNG
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.
.PP
Die Header-Datei
.B <locale.h>
deklariert Datentypen, Funktionen und Makros, die für diese Aufgabe
hilfreich sind.
.PP
Die Funktionen, die deklariert werden, sind
.BR setlocale() ,
um die aktuelle Locale zu setzen und
.BR localeconv() ,
um Informationen über Zahlenformate zu erhalten.
.PP
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
.B setlocale()
benutzt werden, ist es möglich, eine dieser auf die gewünschte Locale
zu setzen:
.TP
.B LC_COLLATE
Dieses wird benutzt, um das Verhalten der Funktionen
.B strcoll()
und
.B strxfrm()
zu beeinflussen, die benutzt werden, um Zeichenketten gemäß des lokalen
Alphabets zu vergleichen. Zum Beispiel wird das Deutsche scharfe ß
wie "ss" sortiert.
.TP
.B LC_CTYPE
Dieses ändert das Verhalten von Zeichenorientierten und
-Klassifizierungs-Funktionen wie
.B isupper()
und
.B toupper()
sowie multi\-byte Zeichen-Funktionen wie
.B mblen()
oder
.BR wctomb() .
.TP
.B LC_MONETARY
ändert die Informationen, die von
.B localeconv()
zurückgegeben werden. Sie beschreiben das Format, wie Zahlen
normalerweise ausgegeben werden, inklusive Details wie Dezimalpunkt
bzw. Dezimalkomma. Dieser Information wird intern von der Funktion
.B strfmon()
benutzt.
.TP
.B LC_MESSAGES
.\" Kann mir mal jemand verklugfiedeln was es hier mit positiven und
.\" negativen Antworten auf sich hat? -Joey
ändert die Sprache, in der Meldungen angezeigt werden, und wie eine
positive oder negative Antwort aussieht. Die GNU C-Bibliothek
beinhaltet die Funktion
.BR rpmatch() ,
um diese Informationen anzuwenden.
.TP
.B LC_NUMERIC
"andert die Informationen, die von den Funktionsfamilien
.B printf()
und
.B scanf()
benutzt werden, wenn sie angewiesen werden, Locale-Einstellungen zu
benutzen. Diese Informationen können ebenfalls mit der Funktion
.B localeconv()
gelesen werden.
.TP
.B LC_TIME
ändert das Verhalten der Funktion
.BR 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.
.TP
.B LC_ALL
Alles bisherige.
.PP
Wenn das zweite Argument von
.B setlocale()
für die vorgegebene Locale ein leerer String
.B """"""
ist, wird sie anhand folgender Schritte ermittelt:
.IP 1.
Wenn eine nichtleere Umgebungsvariable
.B LC_ALL
existiert, wird der Wert von
.B LC_ALL
benutzt.
.IP 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.
.IP 3.
Wenn eine nichtleere Umgebungsvariable namens
.B LANG
existiert, wird ihr Wert benutzt.
.PP
Informationen über Formatierung von Zahlen wird in einer Datenstruktur
gespeichert, die von der Routine
.B localeconv()
zurückgegeben wird. Sie ist wie folgt deklariert:
.nf
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 '\0'. */
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;
};
.fi
.SH "KONFORM ZU"
POSIX.1
.SH "SIEHE AUCH"
.BR setlocale (3),
.BR localeconv (3),
.BR locale (1),
.BR localedef (1),
.BR rpmatch (3),
.BR strfmon (3),
.BR strcoll (3),
.BR strxfrm (3),
.BR strftime (3).
|