Tato otázka byla stimulována položením otázky
Prohlížeč Chromium neumožňuje nastavení výchozí velikosti papíru pro „Tisk do souboru“ a také konverzací s @Gilles na chatu. Jak poukázal @don_crissti a jak jsem ověřil, změna národního prostředí (alespoň LC_PAPER ) je rozdíl ve výběru velikosti papíru.
Nikdy jsem moc nepřemýšlel nad tím, co vybrat, a vždy jsem zvolil en_US.UTF-8 protože to vypadalo jako rozumná výchozí volba.
Nicméně za @Gilles na chatu (viz konverzace začínající na http://chat.stackexchange.com/transcript/message/17017095#17017095). Výtažky:
Gilles:Výchozí nastavení LC_PAPER je $LANG
Gilles:Musíte mít LANG=en_US.UTF-8. To je špatný nápad:nastavuje to
LC_COLLATE a to je téměř vždy špatnéGilles:LC_COLLATE nepopisuje správné řazení, je příliš
omezující (jde znak po znaku) odstraňte LANG a místo toho
nastavte LC_CTYPE a LC_PAPERGilles:plus LC_MESSAGES, pokud chcete zprávy v jiném jazyce než
angličtina
Je zřejmé, že zde existují problémy, o kterých nevím, a jsem si jistý, že mnoho dalších také. Jaké problémy byste tedy měli zvážit při nastavování národních prostředí a jak byste je měli nastavit? Vždy jsem spouštěl pouze dpkg-reconfigure locales v Debianu a nepřemýšleli jsme o tom dvakrát.
Konkrétní otázka:Mám nastavit své národní prostředí na en_IN.UTF-8? Má to nějaké nevýhody?
Přijatá odpověď:
Nastavení národního prostředí jsou uživatelské preference, které se vztahují k vaší kultuře.
Názvy národního prostředí
Na všech současných unixových variantách, které znám (ale ne na několika starožitnostech), se názvy lokalit řídí stejným vzorem:
- Malý dvoupísmenný kód jazyka podle normy ISO 639-1 nebo třípísmenný kód jazyka podle normy ISO 639-2, pokud jazyk nemá žádný dvoupísmenný kód. Například
enpro angličtinudepro němčinujapro japonštinuukpro ukrajinštinuberpro Berbra, … - U mnoha, ale ne u všech jazyků, podtržítko
_následovaný velkým dvoupísmenným kódem země ISO 3166. Tedy:en_USpro americkou angličtinu,en_UKpro britskou angličtinufr_CAkanadská (Québec) francouzština,de_DEpro němčinude_ATpro rakouskou němčinuja_JPpro japonštinu (Japonska) atd. - Volitelně tečka
.následovaný názvem kódování znaků, napříkladUTF-8,ISO-8859-1,KOI8-U,GB2312,Big5, atd. Alespoň u GNU libc (nevím, jak je to rozšířené), jsou malá a velká písmena a interpunkce v kódování jmen ignorována. Napříkladzh_CN.UTF-8je mandarínská (zjednodušená) čínština zakódovaná v UTF-8, zatímcozh_CNje mandarínská čínština zakódovaná v GB2312 azh_TWje tchajwanská (tradiční) čínština zakódovaná v Big5. - Volitelně zavináč
@následovaný názvem varianty. Význam variant je závislý na lokalitě. Například mnoho evropských zemí má@eurovarianta národního prostředí, kde je znak měny € a kde kódování obsahuje tento znak (ISO 8859-15 nebo ISO 8859-16), na rozdíl od nepřikrášlené varianty se starším znakem měny. Napříkladen_IE(Angličtina, Irsko) používá kódování latin1 (ISO 8859-1) a £ jako symbol měny, zatímco[email protected]používá kódování latin9 (ISO 8859-15) a jako symbol měny €.
Kromě toho existují dva názvy národních prostředí, které existují na všech unixových systémech:C a POSIX . Tyto názvy jsou synonyma a znamenají počítačový jazyk, tj. výchozí nastavení, která jsou vhodná pro data analyzovaná počítačovým programem.
Místní nastavení
Následující kategorie lokalit jsou definovány POSIX:
LC_CTYPE:znaková sada používaná terminálovými aplikacemi:klasifikační data (které znaky jsou písmena, interpunkce, mezery, neplatné atd.) a převod velkých a malých písmen. Textové nástroje obvykle dbají naLC_CTYPEk určení hranic postav.LC_COLLATE:řazení (tj. řazení) pořadí. Toto nastavení má velmi omezené použití z několika důvodů:- Většina jazyků má složitá pravidla, která závisí na tom, co se třídí (např. slova ve slovníku a vlastní jména nemusí mít stejné pořadí) a nelze je vyjádřit pomocí
LC_COLLATE. - Existuje několik aplikací, kde záleží na správném pořadí řazení, které provádí software, který používá nastavení národního prostředí. Například textové procesory ukládají jazyk a kódování souboru do samotného souboru (jinak by soubor nebyl zpracován správně v systému s odlišným nastavením národního prostředí) a nezajímají se o nastavení národního prostředí určeného prostředím.
LC_COLLATEmůže mít nepříjemné vedlejší účinky, zejména proto, že způsobuje řazení A [A-Z] přerušit některé aplikace.
- Většina jazyků má složitá pravidla, která závisí na tom, co se třídí (např. slova ve slovníku a vlastní jména nemusí mít stejné pořadí) a nelze je vyjádřit pomocí
LC_MESSAGES:jazyk informačních a chybových zpráv.LC_NUMERIC:formátování čísel:oddělovač desetinných míst a tisíců.
Mnoho aplikací má pevný kód.jako oddělovač desetinných míst. Tím se vytvoříLC_NUMERICnepříliš užitečné a potenciálně nebezpečné:- I když jej nastavíte, stále poměrně často uvidíte výchozí formát.
- Pravděpodobně se dostanete do situace, kdy jedna aplikace produkuje výstup závislý na národním prostředí a jiná aplikace očekává
.být desetinnou čárkou nebo,být oddělovačem polí.
LC_MONETARY:jakoLC_NUMERIC, ale pro částky v místní měně.
Velmi málo aplikací to používá.LC_TIME:formátování data a času:názvy dnů v týdnu a měsíců, 12 nebo 24hodinový formát času, pořadí částí data, interpunkce atd.
GNU libc, kterou najdete na neembedded Linuxu, definuje další kategorie lokalit:
LC_PAPER:výchozí velikost papíru (definovaná výškou a šířkou).LC_NAME,LC_ADDRESS,LC_TELEPHONE,LC_MEASUREMENT,LC_IDENTIFICATION:Nevím o žádné aplikaci, která by je používala.
Proměnné prostředí
Aplikace, které používají nastavení národního prostředí, je určují z proměnných prostředí.
- Poté hodnotu
LANGProměnná prostředí se používá, pokud není přepsána jiným nastavením. PokudLANGnení nastaveno, výchozí národní prostředí jeC. LC_xxxjména lze použít jako proměnné prostředí.- Pokud
LC_ALLje nastaveno, pak jsou všechny ostatní hodnoty ignorovány; to je užitečné především pro nastaveníLC_ALL=Cspouštějte aplikace, které potřebují produkovat stejný výstup bez ohledu na to, kde jsou spuštěny. - Kromě toho GNU libc používá
LANGUAGEk definování záložních reklam proLC_MESSAGES(např.LANGUAGE=fr_BE:fr_FR:enpreferovat belgickou francouzštinu, nebo pokud není k dispozici Francii francouzštinu, nebo pokud není k dispozici angličtina).
Instalace národních prostředí
Místní data mohou být velká, takže některé distribuce je nedodávají v použitelné formě a místo toho vyžadují další instalační krok.
- Pokud chcete v Debianu nainstalovat národní prostředí, spusťte
dpkg-reconfigure localesa vyberte ze seznamu v dialogovém okně nebo upravte/etc/locale.gena poté spusťtelocale-gen. - Pokud chcete v Ubuntu nainstalovat národní prostředí, spusťte
locale-gens názvy národních prostředí jako argumenty.
Můžete definovat své vlastní národní prostředí.
Doporučení
Užitečná nastavení jsou:
- Nastavte
LC_CTYPEna jazyk a kódování, do kterého kódujete textové soubory. Ujistěte se, že vaše terminály toto kódování používají.
U většiny jazyků záleží pouze na kódování. Existuje několik výjimek; například velkéijeIve většině jazyků kroměİv turečtině (tr_TR). - Nastavte
LC_MESSAGESdo jazyka, ve kterém chcete zprávy zobrazovat. - Nastavte
LC_PAPERdoen_USpokud chcete, aby výchozí velikost papíru byla US Letter a téměř cokoliv jiného (např.en_GB), pokud chcete A4. - Volitelně nastavte
LC_TIMEna váš oblíbený formát času.
Jak je vysvětleno výše, vyhněte se nastavení LC_COLLATE a LC_NUMERIC . Pokud používáte LANG , explicitně přepíše tyto dvě kategorie jejich nastavením na C .