LOCALE(7)

NAZWA
locale - opis obsługi wielu języków

SKŁADNIA
#include <locale.h>

OPIS
Locale to zestaw reguł językowych i kulturalnych. Obejmują one aspekty takie, jak język komunikatów, różne zestawy znaków, konwencje leksykograficzne itd. Program musi umieć określić swoje locale i zachowywać się odpowiednio, aby można go było przenieść do innych kultur.

Nagłówek <locale.h> deklaruje typy danych, funkcje i makra przydatne w tym przedsięwzięciu.

Funkcje deklarowane to setlocale(3), ustawiająca bieżące locale, i localeconv(3), pobierająca informacje o formatowaniu liczb.

Istnieją różne kategorie informacji regionalnych, których potrzebować może program; zadeklarowane są one jako makra. Używając ich jako pierwszego argumentu funkcji setlocale(3), możliwe jest ustawienie poniższych informacji regionalnych:

LC_COLLATE
    Używane do zmiany zachowania funkcji strcoll(3) i strxfrm(3), porównujących łańcuchy znaków w alfabecie lokalnym. Na przykład niemieckie scharfes S sortowane jest jako "ss".

LC_CTYPE
    Zmienia zachowanie operacji na znakach i funkcji klasyfikacyjnych, takich jak isupper(3) i toupper(3), oraz znakowych funkcji wielobajtowych, takich jak mblen(3) i wctomb(3).

LC_MONETARY
    Zmienia informację zwracaną przez localeconv(3), która opisuje sposób, w jaki zwykle drukowane są liczby, ze szczegółami takimi jak kropka dziesiętna kontra przecinek dziesiętny. Informacja ta jest używana wewnętrznie przez funkcję strfmon(3).

LC_MESSAGES
    Zmienia język, w którym wyświetlane są komunikaty, oraz to, jak wygląda odpowiedź twierdząca i przecząca. Biblioteka GNU C zawiera funkcje gettext(3), ngettext(3) oraz rpmatch(3), ułatwiające użycie tych informacji. Funkcje GNU z rodziny gettext biorą pod uwagę również zmienną środowiska LANGUAGE (zawierającą rozdzieloną dwukropkami listę ustawień językowych), jeśli bieżące ustawienia językowe są poprawne i różne od "C".

LC_NUMERIC
    Zmienia informacje używane przez rodzinę funkcji printf(3) i scanf(3), kiedy radzi im się, żeby używały ustawień locale. Informacja ta może być także odczytana funkcją localeconv(3).

LC_TIME
    Zmienia zachowanie funkcji strftime(3), wyświetlającej bieżący czas w formie lokalnie akceptowalnej; na przykład, większość Europy używa zegara 24-godzinnego, podczas gdy w USA używa się 12-godzinnego.

LC_ALL
    Wszystko powyższe.

Jeśli drugim argumentem setlocale(3) jest łańcuch pusty "" oznaczający locale domyślne, ustala się je w następujący sposób:

1.  Jeśli istnieje niepusta zmienna środowiskowa LC_ALL, używana jest wartość LC_ALL

2.  Jeśli istnieje i jest niepusta zmienna środowiskowa o tej samej nazwie co jedna z kategorii powyżej, dla tej kategorii używana jest jej wartość.

3.  Jeśli istnieje niepusta zmienna środowiskowa LANG, używana jest wartość LANG

Wartości dotyczące lokalnego formatowania dostępne są w strukturze lconv, zwracanej przez funkcję localeconv(3). lconv ma następującą deklarację:
struct lconv {
    /* Informacja numeryczna (niewalutowa) */
    char *decimal_point;     /* Znak dziesiętny  */
    char *thousands_sep;     /* Separator tysięcy  */
    char *grouping; /* Każdy element to liczba cyfr w danej grupie,
                       elementy z większymi indeksami są bardziej
                       na lewo. Element o wartości CHAR_MAX oznacza,
                       że nie następuje dalsze grupowanie. Element
                       o wartości 0 oznacza, że dla wszystkich
                       grup bardziej na lewo używany jest element
                       poprzedni. */
    /* Pozostałe pola zawierają informacje o walucie */
    char *int_curr_symbol;   /* Pierwsze trzy znaki to symbol waluty
                                z ISO 4217. Czwarty znak to
                                separator. Piąty to "\0". */
    char *currency_symbol;   /* Symbol lokalnej waluty  */
    char *mon_decimal_point; /* Znak dziesiętny  */
    char *mon_thousands_sep; /* Jak thousands_sep (powyżej) */
    char *mon_grouping;      /* Jak grouping (powyżej) */
    char *positive_sign;     /* Znak dla wartości dodatnich */
    char *negative_sign;     /* Znak dla wartości ujemnych */
    char  int_frac_digits;   /* Międzynarodowe cyfry dziesiętne */
    char  frac_digits;       /* Lokalne cyfry dziesiętne */
    char  p_cs_precedes;     /* 1, jeśli symbol waluty poprzedza wartość
                                dodatnią, 0, jeśli następuje po niej */
    char  p_sep_by_space;    /* 1, jeśli symbol waluty oddziela
                                od wartości dodatniej spacja */
    char  n_cs_precedes;     /* 1, jeśli symbol waluty poprzedza wartość
                                ujemną, 0 jeśli następuje po niej */
    char  n_sep_by_space;    /* 1, jeśli symbol waluty oddziela
                                od wartości ujemnej spacja */
    /* Dodatnie i ujemne pozycje znaku:
       0 Wartość i symbol waluty w nawiasach.
       1 Znak poprzedza wartość i symbol waluty.
       2 Znak następuje po wartości i symbolu waluty.
       3 Znak następuje tuż przez symbolem waluty.
       4 Znak następuje tuż po symbolu waluty. */
    char p_sign_posn;
    char n_sign_posn;
};

ZGODNE Z
POSIX.1-2001. Funkcje GNU gettext są zdefiniowane w LI18NUX2000.

ZOBACZ TAKŻE
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)

O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.52 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Gwidon S. Naskrent (PTM) <naskrent@hoth.amu.edu.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.52 oryginału.