LOCALE(7)

JMÉNO
locale - Popis vícejazykové podpory

SYNTAXE
#include <locale.h>

POPIS
Locale je množina jazykových a kulturních pravidel pro popis takových aspektu jako jsou jazyk pro zprávy, různé znakové sady, abecední řazení atd. Každý program musí mít možnost zjistit jeho locale a chovat se podle jím daných pravidel.

Hlavičkový soubor <locale.h> deklaruje datové typy, funkce a makra, která tuto přenositelnost usnadňuje.

Deklarované funkce: setlocale() pro nastavení aktuálního lacale a localeconv() pro zjištění informací o formátování čísel.

Různé kategorie pro lokální informace jsou definovány jako makra. Jestliže se použijí jako první argument pro funkci setlocale() je možno nastavit jednu z požadovaných kategorií:

LC_COLLATE
    Mění chování funkcí strcoll() a strxfrm(), které se používají na porovnání řetězců v lokální abecedě, Například, ostré německé s se třídí jako "ss".

LC_CTYPE
    Mění chování klasifikačních funkcí a maker jako isupper() a toupper(), a funkcí pro vícebytové znaky jako je mblen() nebo wctomb().

LC_MONETARY
    Mění návratovou hodnotu funkce localeconv() , která popisuje způsob jak jsou tištěna čísla, včetně detailů o desetinné tečce či čárce. Interně je tato informace použita ve funkci strfmon() .

LC_MESSAGES
    mění jazyk zpráv a určuje jak vypadá pozitivní a negativní odpověď v daném jazyce. GNU C-lib obsahuje pro tento účel funkci rpmatch() .

LC_NUMERIC
    Mění chování funkcí printf() a scanf() kdykoli mají použít nastavení locale. Tuto informaci lze také číst pomocí funkce localeconv() .

LC_TIME
    mění chování funkcí strftime() , která zobrazuje současný čas podle lokálních pravidel; například v Evropě se běžně používá 24 hodinový den, zatímco v USA 12 hodinový.

LC_ALL
    Nastavuje vše.

Jestliže je druhý argument pro setlocale() prázdný řetězec, "", hledá se základní locale takto:

1.  Jestliže je nastavena proměnná prostředí LC_ALL, použije se LC_ALL .

2.  Jestliže existuje proměnná prostředí, která se jmenuje stejně jako některá z kategorií, použije se tato.

3.  Jestliže je nastavena proměnná prostředí LANG, použije se hodnota LANG .

Hodnoty pro číselnou konverzi jsou nastaveny ve struct lconv , kterou vrací funkce localeconv() , má následující deklaraci:
struct lconv
{
  /* Číselná (nikoli peněžní) informace */
  char *decimal_point;		/* Znak pro desetinnou čárku  */
  char *thousands_sep;		/* Oddělovač tisíců  */
  /* Každý prvek označuje počet číslic ve skupině;
     významnější hodnoty se zobrazují více vlevo.
     Pozice CHAR_MAX určuje odkud se již žádné oddělování nečiní.
     Prvek s hodnotou 0 označuje, že předchozí prvek se použije odtud
     doleva. */
  char *grouping;
  /* Peněžní informace.  */
  /* První tři znaky jsou symbolem měny podle ISO 4217.
     Čtvrtý znak je oddělovač, pátý je ' ' */
  char *int_curr_symbol;
  char *currency_symbol;	/* Lokální symbol pro měnu  */
  char *mon_decimal_point;	/* desetinné čárka  */
  char *mon_thousands_sep;	/* oddělovač tisíců  */
  char *mon_grouping;		/* Viz grouping nahoře  */
  char *positive_sign;		/* Kladné znaménko  */
  char *negative_sign;		/* Záporné znaménko */
  char int_frac_digits;		/* Mezinárodní počet des. míst  */
  char frac_digits;		/* Lokální počet des. míst */
  /* 1 když znak měny předchází číslo, 0 když jej následuje */
  char p_cs_precedes;
  /* 1 když mezera odděluje currency_symbol od desetinné čárky */
  char p_sep_by_space;
  /* 1 když currency_symbol předchází záporné hodnoty, 0 když následuje */
  char n_cs_precedes;
  /* 1 když mezera odděluje currency_symbol  zápornou hodnotu */
  char n_sep_by_space;
  /* Kladné a záporné znaménko:
     0 Závorky kolem hodnoty a symbolu měny.
     1 Znaménko před hodnotou i symbolem měny.
     2 Znaménko následuje za hodnotou i symbolem měny.
     3 Znaménko bezprostředně před symbolem měny.
     4 Znaménko bezprostředně následuje symbolem měny. */
  char p_sign_posn;
  char n_sign_posn;
};

STANDARDY
POSIX.1

VIZ TÉŽ
setlocale(3), localeconv(3), locale(1), localedef(1) , rpmatch(3), strfmon(3), strcoll(3), strxfrm(3), strftime(3)