Locale

Locale (vyslovováno [loʊˈkæl, -ˈkɑl][1]) je v informatice soubor parametrů, které definují uživatelův jazyk, stát a jiné zvláštnosti, které se následně projeví v uživatelském rozhraní. Obvykle se locale skládá přinejmenším z identifikátoru jazyka a státu. V unixových a jiných systémech založených POSIXu jsou locale identifikátory podobné, jako definice jazyka značek BCP 47, ale modifikátor locale je definován odlišně, protože obsahuje navíc část se znakovou sadou.

Definice formátu: [jazyk[_území][.znaková sada][@modifikátor]] (např. čeština s kódováním UTF-8 je cs_CZ.UTF-8).

Funkce locale

Locale definují různé jazykově specifické odlišnosti, mezi které patří:

  • formát čísel (např. oddělování řádů, desetinná tečka nebo čárka)
  • roztřídění znaků do skupin, pravidla pro změnu velikosti znaků (malé/velké písmeno, čČ, řŘ, …)
  • formát data a času (31. 12. 1970, 12/31/70 apod.)
  • pravidla pro porovnání řetězců (třídění dle abecedy)
  • nastavení měny (Kč, $, € atd.)
  • velikost papíru
  • další drobná nastavení…

Nastavení locale ovlivňuje formátování výstupu, takže časové pásmo a letní čas obvykle nejsou součástí nastavení locale. Méně obvyklé, ale za zmínku stojící, je formátování vstupů, které je většinou definováno na úrovni aplikace. Locale dále definuje obecné rozložení rozložení kláves (pro daný jazyk).

Podpora v programovacích jazycích

Podpora je v těchto programovacích jazycích:

a další dnešní prostředí založená na Unicode, která jsou definována podobně jako BCP 47. Jsou definována obvykle pouze za pomoci kódů ISO 639 a ISO 3166-1 alpha-2.

POSIX platformy

V unixových, linuxových a jiných POSIX platformách je locale identifikátor definován podobně, jako BCP 47, ale locale obsahuje navíc znakovou sadu (implicitní znaková sada pro češtinu je totiž stále ISO-8859-2). V následujícím příkladu je výstup příkazu locale pro český jazyk (cs) a Českou republiku (CZ) s užitím kódování UTF-8. V tomto případě je v systému nastavena pouze proměnná prostředí LANG, která má nejnižší váhu. Nastavením proměnné prostředí s vyšší váhou (ve výpisu jsou níže) dojde k předefinování proměnné s nižší váhou. Je tak možné například nastavit prostředí programu tak, aby bylo české, ale zároveň byl používán anglický zápis čísel s desetinnou tečkou (tj. v tomto případě nastavit LC_NUMERIC na nějaký anglický locale kód, například en_US). Nejvyšší váhu má proměnná LC_ALL, která přebije nastavení jakýchkoliv ostatních proměnných.

[user@machine ~]$ locale
LANG=cs_CZ.UTF-8
LC_CTYPE="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_PAPER="cs_CZ.UTF-8"
LC_NAME="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_MEASUREMENT="cs_CZ.UTF-8"
LC_IDENTIFICATION="cs_CZ.UTF-8"
LC_ALL=

Pokud není locale definováno, předpokládá se nastavení na C – C (programovací jazyk), čímž je míněno v podstatě anglické prostředí.

Specifika pro platformy Microsoft

V Microsoft Windows je historicky pro „neřízený kód“ (anglicky unmanaged code) používán locale identifikátor (LCID). Například číslo 1033 pro angličtinu (Spojené státy), nebo 1041 pro japonštinu (Japonsko).[2] LCID číslo se skládá z kódu jazyka (spodních 10 bitů) a kulturního kódu (horní bity). Proto se obvykle zapisují hexadecimálně, například 0x0409 nebo 0x0411. Microsoft zavedl pro .NET API, které tyto kódy využívá. Jedna z prvních implementací API, která byla vypuštěna, byla funkce pro řešení problémů s doménovými jmény, které obsahují znaky národních abeced – tzv. IDN (Internationalized Domain Names).[3] Další API s LCID byly uvedeny v systému Windows Vista Beta 1.

Od vydání Windows Vista přechází Microsoft na názvy locale podle BCP 47, které by mělo nahradit všechna zastaralá rozhraní založená na LCID.[4]

Reference

  1. The definition of locale. Dictionary.com [online]. [cit. 2016-10-04]. Dostupné online. 
  2. Locale ID (LCID) Chart (seznam jazyků a jejich LCID)
  3. DownlevelGetLocaleScripts Function
  4. Locale Names

Související články

Externí odkazy