GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit národní prostředí a jaké to má důsledky?

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_PAPER

Gilles: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 en pro angličtinu de pro němčinu ja pro japonštinu uk pro ukrajinštinu ber pro 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_US pro americkou angličtinu, en_UK pro britskou angličtinu fr_CA kanadská (Québec) francouzština, de_DE pro němčinu de_AT pro rakouskou němčinu ja_JP pro japonštinu (Japonska) atd.
  • Volitelně tečka . následovaný názvem kódování znaků, například UTF-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říklad zh_CN.UTF-8 je mandarínská (zjednodušená) čínština zakódovaná v UTF-8, zatímco zh_CN je mandarínská čínština zakódovaná v GB2312 a zh_TW je 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á @euro varianta 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říklad en_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:

Související:Jak načasovat několik procesů na pozadí?

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 LANG Proměnná prostředí se používá, pokud není přepsána jiným nastavením. Pokud LANG není nastaveno, výchozí národní prostředí je C .
  • LC_xxx jména lze použít jako proměnné prostředí.
  • Pokud LC_ALL je nastaveno, pak jsou všechny ostatní hodnoty ignorovány; to je užitečné především pro nastavení LC_ALL=C spouš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á LANGUAGE k definování záložních reklam pro LC_MESSAGES (např. LANGUAGE=fr_BE:fr_FR:en preferovat 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 locales a vyberte ze seznamu v dialogovém okně nebo upravte /etc/locale.gen a poté spusťte locale-gen .
  • Pokud chcete v Ubuntu nainstalovat národní prostředí, spusťte locale-gen s 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_CTYPE na 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é i je I ve většině jazyků kromě İ v turečtině (tr_TR ).
  • Nastavte LC_MESSAGES do jazyka, ve kterém chcete zprávy zobrazovat.
  • Nastavte LC_PAPER do en_US pokud 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_TIME na váš oblíbený formát času.
Související:Povolit uživateli1 „su – uživatel2“ bez hesla?

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 .


Linux
  1. Linux – Jak zjistit, jaké pevné disky jsou v systému?

  2. Co jsou režimy SELinux a jak je nastavit

  3. Jaký je rozdíl mezi env a set (na Mac OS X nebo Linux)?

  1. Jaké jsou rozdíly mezi lsof a netstat na linuxu?

  2. Jaké jsou rozdíly mezi rdesktop a xfreerdp?

  3. Jak nastavím formát data na ISO globálně v Linuxu?

  1. Jaké jsou ovládací a přesměrovací operátoři Shell?

  2. Jaký je rozdíl mezi národními prostředími C.UTF-8 a en_US.UTF-8?

  3. Jak můžete přepnout klávesy j a k ve vim?