locale

Autres langues

Langue: pl

Autres versions - même langue

Version: 20 września 1998 (fedora - 25/11/07)

Autres sections - même nom

Section: 7 (Divers)

NAZWA

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

STRESZCZENIE

 #include <locale.h>
 

OPIS

Locale to zestaw reguł językowych i kulturalnych. Pokrywają 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 lokalnej informacji której potrzebować może program; zadeklarowane są one jako makra. Używając ich jako pierwszy argument funkcji setlocale() możliwe jest ustawienie jednego z poniższych na żądane locale:

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 vs. 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 słuchają również zmiennej 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, vs. 12-godzinnego w USA.
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-monetarna)  */
 
   char *decimal_point;          /* Znak dziesiętny  */
   char *thousands_sep;          /* Separator tysięcy  */
   /* Każdy element to ilość 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. */
   char *grouping;
 
   /* Informacja monetarna  */
 
   /* Pierwsze trzy znaki to symbol waluty z ISO 4217. Czwarty znak to
      separator.  Piąty to ' '.  */
   char *int_curr_symbol;
   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  */
   /* 1 jeśli symbol waluty poprzedza wartość dodatnią, 0 jeśli następuje */
   char p_cs_precedes;
   /* 1 jeśli symbol waluty oddziela od wartości dodatniej spacja */
   char p_sep_by_space;
   /* 1 jeśli symbol waluty poprzedza wartość ujemną, 0 jeśli następuje */
   char n_cs_precedes;
   /* 1 jeśli symbol waluty oddziela od wartości ujemnej spacja */
   char n_sep_by_space;
   /* 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

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