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(), ustawiająca bieżące locale, i localeconv(), 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 pierwszy argument funkcji setlocale(), możliwe jest ustawienie na żądane locale jednego z poniższych makr:

LC_COLLATE
    Używane do zmiany zachowania funkcji strcoll() i strxfrm(), które używane są do porównywania łańcuchó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() i toupper(), oraz znakowych funkcji wielobajtowych, takich jak mblen() i wctomb().

LC_MONETARY
    Zmienia informację zwracaną przez localeconv(), 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().

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(), ngettext() oraz rpmatch(), ułatwiające użycie tych informacji. Funkcje GNU z rodziny gettext biorą pod uwagę również zmienną środowiska LANGUAGE.

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

LC_TIME
    Zmienia zachowanie funkcji strftime(), 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żej.

Jeśli drugim argumentem setlocale() jest łańcuch pusty "" oznaczający locale domyślne, ustala się je wedle poniższych kroków:

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(). lconv ma następującą deklarację:
struct lconv {
  /* Informacja numeryczna (nie-walutowa) */
  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 ' '. */
  char *currency_symbol;   /* Symbol lokalnej waluty  */
  char *mon_decimal_point; /* Znak dziesiętny  */
  char *mon_thousands_sep; /* Separator tysięcy  */
  char *mon_grouping;      /* Jak element 'grupujący' (wyżej)  */
  char *positive_sign;     /* Znak dla wartości dodatnich  */
  char *negative_sign;     /* Znak dla wartości ujemnych  */
  char  int_frac_digits;   /* Międzynar. 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 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)