10.4. Lokální přizpůsobení — I18N and L10N

SUSE Linux je mezinárodní systém, který se dá velmi flexibilně přizpůsobit lokálním potřebám. Internacionální charakter (I18N) jinými slovy umožňuje specifický přístup k lokalizaci (L10N).

Lokální nastavení pro národní jazyky je zajištěno proměnnými LC_ definovanými v souboru /etc/sysconfig/language. Nejde přitom pouze o určení jazyka pro komunikaci s jednotlivými aplikacemi a prostředí programů v původním jazyce, ale také o zprávy systému, znakové sady, pořadí při abecedním třídění, formát časových údajů, desetinných čísel a peněžních částek. Každou z těchto kategorií můžete definovat přímo její proměnnou, nebo nepřímo hlavní proměnnou v souboru language (podívejte se na manuálové stránky man locale).

  1. RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY: Tyto proměnné se exportují do prostředí příkazového interpretu bez předpony RC_ a určují jednotlivé z lokalizačních kategorií. Soubory, kterých se to týká najdete v seznamu níže. Nastavení proměnných zjistíte výpisem příkazu locale.

  2. RC_LC_ALL: Pokud je nastavena tato proměnná, přepíše svou hodnotou výše uvedené proměnné.

  3. RC_LANG: Pokud není nastavena žádná z výše uvedených proměnných, je výchozí hodnotou. Defaultně SUSE Linux nastavuje pouze RC_LANG. Tato vlastnost pomáhá uživatelům zavést své vlastní hodnoty.

  4. ROOT_USES_LANG: V případě nastavení na no, root pracuje root v prostředí standardu POSIX.

Ostatní proměnné můžete nastavit YaSTem v editoru souborů sysconfig. Hodnota těchto proměnných obsahuje kód jazyka, země, kódování a modifikátoru. Individuální komponenty jsou připojitelné pomocí speciálních znaků:

  LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]

10.4.1. Některé příklady

Nastavení jazyka a kódů země by mělo jít ruku v ruce. Jazyková nastavení jsou dle standardu ISO 639 (http://www.evertype.com/standards/iso639/iso639-en.html a http://www.loc.gov/standards/iso639-2/). Kódy zemí naleznete v ISO 3166, podívejte se na (http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html). Smysl má nastavit hodnoty, jejichž popis užití naleznete v /usr/lib/locale. Další soubory s popisy můžete vytvořit ze souborů v adresáři /usr/share/i18n použitím příkazu localedef. Soubor s popisem cs_CZ.UTF-8 (pro naši krásnou zemi) vytvoříte takto:

localedef -i cs_CZ -f UTF-8 cs_CZ.UTF-8
LANG=cs_CZ.UTF-8

Toto je defaultní nastavení, když je v průběhu instalace vybrána čeština. Jestliže zvolíte jiný jazyk, bude tento jazyk také s kódováním UTF-8.

LANG=cs_CZ.ISO-8859-2

Takto nastavíme proměnnou na češtinu, zemi na Českou republiku a znakovou sadu na ISO-8859-2. Řetězec definující znakovou sadu, kterou je v našem případě ISO-8859-2 pak bude načítán programy jako je Emacs.

SuSEconfig čte proměnnou ze souboru /etc/sysconfig/language a zapisuje nezbytné změny do /etc/SuSEconfig/profile a do /etc/SuSEconfig/csh.cshrc. Pak přečte /etc/SuSEconfig/profile, nebo data načte ze zdroje, kterým je /etc/profile. /etc/SuSEconfig/csh.cshrc hledá svůj zdroj v /etc/csh.cshrc. Toto uspořádání umožňuje široké spektrum nastavení i pro velký systém.

Uživatelé také mohou přepisovat původní hodnoty v systému editací ~/.bashrc ve svém home adresáři. Jako příklad je možné uvést zobrazování programových hlášek v češtině cs_CZ do španělštiny, což znamená použít LC_MESSAGES=es_ES.

10.4.2. Nastavení jazykové podpory

Dle pravidel pro kategorii Messages pak systém zprávy ukládá v příslušném jazykovém adresáři (v našem případě cs) jako zálohu. Jestliže nastavíte LANG na cs_CZ a soubor zpráv ukládáte do /usr/share/locale/en_US/LC_MESSAGES, který neexistuje, systém jej bude dále ukládat do souboru /usr/share/locale/en/LC_MESSAGES.

Řetěz zálohových souborů můžete nadefinovat např. pro slovenštinu a češtinu, či pro galštinu, španělštinu a portugalštinu:

LANGUAGE="cs_SK:cs_CZ"

LANGUAGE="gl_ES:es_ES:pt_PT"

Jestli toužíte po tradiční norštině nynorsk a bokmĂĽl namísto a s dodatečnou zálohou pro no), proveďte úpravu proměnné do tohoto tvaru:

LANG="nn_NO"

LANGUAGE="nn_NO:nb_NO:no"

or

LANG="nb_NO"

LANGUAGE="nb_NO:nn_NO:no"

Poznamenejme nakonec, že v norštině je odlišný i parametr LC_TIME.

10.4.2.1. Vyskytující se problémy

Pro správnou práci s desetinnými čisly v češtině nestačí pouze nastavit proměnnou LANG na cs. Aby např. knihovna glibc našla správnou hodnotu v souboru /usr/share/locale/en_US/LC_NUMERIC, je třeba nastavit přímo proměnnou LC_NUMERIC na hodnotu cs_CZ.

10.4.2.2. Další informace