Lokalizace

Tato část návodu se zabývá tím co kam napsat, aby se s vámi Debian bavil (více či méně) v češtině a abyste viděli a mohli psát akcentované znaky. Pokud chcete pochopit proč se ta či ona věc dělá, budete muset pohledat po Internetu.

Předem musím varovat, že se nyní v Debianu používá výchozí kódování UTF-8, které je jednu stranu velkým přínosem, na stranu druhou s ním mají některé starší aplikace problémy a není jisté, zda je někdy někdo opraví. Narazíte-li na takovouto aplikaci, dejte nám o tom prosím vědět do české lokalizační konference Debianu, nebo přímo správci této stránky. Je-li pro vás přechod na UTF-8 z nějakého důvodu nemožný, bude ještě nějakou dobu existovat starší verze této stránky, která se zabývá nastavením českého systému v kódování ISO-8859-2.

Také je nutno zmínit, že pokud jste při instalaci Debianu vybrali češtinu, je již mnoho věcí nastaveno za vás (např. locales, textová konzole a klávesové rozložení).

Nastavení českého prostředí

Aby lokalizace fungovala správně, je nutno nainstalovat balík locales, bez kterého by to prostě nešlo. Při konfiguraci balíku budete dotázáni, jaké locales si přejete vygenerovat. Protože asi chcete, aby na vás programy mluvily česky, tak vyberte cs_CZ.UTF-8 UTF-8 (případně starší cs_CZ ISO-8859-2). Nemusíte se omezovat jen na jeden jazyk. Pokud na vašem počítači bude pracovat více lidí z různých zemí, můžete vybrat i jejich národní jazyky — každý uživatel si může nastavit své prostředí podle chuti. Doporučuji vybírat vždy variantu jazyka, ve které se nachází text UTF-8, protože to zjednoduší následné přepínání. Když výběr jazyků potvrdíte, objeví se další okno, ve kterém se máte rozhodnout jaké národní prostředí bude výchozí. Pokud chcete mít systém primárně v češtině, vyberte ze seznamu možnost cs_CZ.UTF-8.

Kdybyste chtěli kdykoliv nastavení locales změnit, stačí z příkazové řádky spustit dpkg-reconfigure locales. Nastavení se projeví až po odhlášení a znovupřihlášení uživatele, případně po ručním nastavení příslušných proměnných.

Nastavení locales si můžete ověřit příkazem locale, který vypíše všechny proměnné související s národním prostředím a jejich hodnoty. Na mém pracovním stroji vypadá výpis locale následovně:

  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=en_GB.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=

Význam všech proměnných se dozvíte v manuálové stránce locale(1), zde je pouze krátký přehled:

LC_CTYPE
určuje co je a co není v daném jazyce znak
LC_COLLATE
určuje pořadí třídění
LC_TIME
určuje formát data a času přizpůsobený jazyku
LC_NUMERIC
určuje formát čísel (oddělovače tisíců a desetinných míst) přizpůsobený zvyklostem jazyka
LC_MESSAGES
určuje jazyk, kterým na vás programy mluví
LC_ALL
přebíjí hodnoty všech LC_* proměnných
LANG
naopak od předchozí slouží jako „záchytná“ proměnná — pokud není nějaká LC_* proměnná explicitně nastavená (kromě LC_ALL), bude mít stejnou hodnotu, jako má LANG.

Například já mám nastavenou proměnnou LANG na hodnotu cs_CZ.UTF-8 a proměnnou LC_MESSAGES na hodnotu en_GB.UTF-8, což znamená, že mám kompletně české prostředí, ale programy na mě mluví britskou angličtinou.

Národní prostředí pro celý systém se nastavuje v souboru /etc/environment. Pokud chce mít uživatel jiné prostředí než správce nastavil, může si ho změnit ve svých konfiguračních skriptech. Pro konzolu v konfiguračním souboru svého oblíbeného shellu (~/.bash_login, ~/.zshenv apod.), pro X Window System nejlépe v ~/.xsession. Stejného prostředí jako mám já, docílíte příkazy:

  export LC_MESSAGES=en_GB.UTF-8
  export LANG=cs_CZ.UTF-8

GNU rozšíření

Nyní musím zmínit jedno nestandardní GNU rozšíření, a sice proměnnou LANGUAGE. Tato proměnná obsahuje dvojtečkami oddělený seznam jazyků, kterými na vás mají programy mluvit. Výhodou oproti proměnné LC_MESSAGES je to, že když daný program není přeložen do zvoleného jazyka, nepřepne se okamžitě do výchozího jazyka, ale zkouší postupně zadané možnosti.

Například nastavením LANGUAGE="cs_CZ:pt_BR:pt:en_GB" říkáte, že má aplikace komunikovat v češtině, pokud čeština není k dispozici, tak má zkusit brazilskou portugalštinu, v dalším kroku běžnou (portugalskou) portugalštinu a na závěr britskou angličtinu. Když ani ta není k dispozici, bude aplikace komunikovat tak, jak jí zobák narostl, tedy pravděpodobně v nějakém druhu zjednodušené mezinárodní angličtiny.

Pozor na to, že proměnná LANGUAGE má přednost před výše popsanými proměnnými LANG, LC_MESSAGES a dokonce i před LC_ALL. Také je třeba mít na paměti fakt, že proměnná, která určuje, zda je daný znak platný nebo ne a v jakém je kódování, je stále LC_CTYPE.

Fonty a klávesnice na konzoli

Abyste na konzoli viděli akcentovaná písmenka a ne různé obdélníčky, přidejte do souboru /etc/console-tools/config řádky

  SCREEN_FONT=lat2-sun16
  SCREEN_FONT_vc2=lat2-sun16
  SCREEN_FONT_vc3=lat2-sun16
  SCREEN_FONT_vc4=lat2-sun16
  SCREEN_FONT_vc5=lat2-sun16
  SCREEN_FONT_vc6=lat2-sun16

Jestliže jste při instalaci zvolili české rozložení klávesnice, můžete se mezi českou a anglickou klávesnicí přepínat klávesou Pause. Pokud jste při instalaci vybrali jinou klávesovou mapu nebo prostě jen chcete rozložení kláves změnit, spuťte jako root příkaz dpkg-reconfigure console-data a z nabízeného seznamu si vyberte vhodnou náhradu.

Naneštěstí je však české rozložení klávesnice na unicodové konzoli téměř nepoužitelné, protože jaderný ovladač klávesnice neumí pracovat s tzv. mrtvou klávesou, pomocí které píšeme písmena jako ó, ť, ň, ď. Písmena navázaná na jedinou klávesu (ě, š, č, ř, ž, ý, á, í, é, ú, ů) půjdou napsat bez problémů. Chyba se týká pouze vstupu — zobrazování znaků funguje. Existuje několik záplat pro řešení této chyby, ale žádná z nich nebyla vývojáři linuxového jádra akceptována.

Aby X aplikace zobrazovaly akcentovaná písmena

Abyste v programech viděli akcentovaná písmenka a ne různé obdélníčky, zlomky nebo průměry, musíte mít nainstalovány příslušné fonty. Pro češtinu jsou to balíky unicodových písem které pokrývají alespoň rozsah ISO8859-2. V popisu těchto písem často můžete nalézt řetězec ISO10646-1. Balíky písem většinou začínají na xfonts- (bitmapová písma) nebo ttf- (TrueType). Například:

To je vše — každý standardní program by měl nyní správně zobrazovat akcentovaná písmena.

Přepínání klávesnic

Standardní českou klávesnici pro X.Org nastavíte v souboru /etc/X11/xorg.conf volbou "XkbLayout" "cz". Celá sekce pro klávesnici vypadá například takto:

  Section "InputDevice"
    Identifier  "Generic Keyboard"
    Driver      "keyboard"
    Option      "CoreKeyboard"
    Option      "XkbRules"      "xorg"
    Option      "XkbModel"      "pc105"
    Option      "XkbLayout"     "cz,us"
    Option      "XkbVariant"    "qwerty,"
    Option      "XkbOptions"    "grp:shifts_toggle,grp_led:scroll,grp:switch"
  EndSection

Tato česká mapa klávesnice umí psát anglické znaky pomocí pravé klávesy Alt. (Např. zavináč se napíše pravý Alt + 2.) Trvalého přepnutí na anglickou klávesnici dosáhnete současným stiskem obou kláves Shift. (Přepnutí na druhou resp. další klávesovou mapu indikuje svítící kontrolka Scroll Lock.)

Komu by nevyhovovalo přepínání mezi klávesovými mapami kombinací Shift+Shift, může zaměnit parametr grp:shifts_toggle za některou (případně některé) z následujících variant:

Přepínání mezi různými klávesovými mapami (které na rozdíl od předchozího nemusí být zapsány v souboru /etc/X11/xorg.conf) se děje programem setxkbmap.

  setxkbmap cz         #přepne na oficiální českou klávesnici
  setxkbmap cz qwerty  #přepne na rozumnou českou klávesnici
  setxkbmap gb         #přepne na anglickou (GB) klávesnici
  setxkbmap us         #přepne na anglickou (US) klávesnici
  setxkbmap fr         #přepne na francouzskou klávesnici

Desktopová prostředí jako KDE a GNOME mají pro přepínání klávesnic vlastní „applety“ (prográmky, které obvykle sedí na panelu), které často spolupracují s výše uvedeným souborem /etc/X11/xorg.conf a přebírají z něj základní nastavení.

Emulátory terminálu (xterm, urxvt)

Pokud tyto aplikace nezobrazují akcentovaná písmena korektně, vyberte si v programu xfontsel vhodné písmo pokrývající rozumný rozsah unicode a to zapište do souboru ~/.Xresources na samostatný řádek. Například:

  XTerm*font:  -misc-fixed-medium-r-*-*-15-*-*-*-*-*-iso10646-1

Změna písma se projeví po dalším přihlášení do X nebo ihned příkazem xrdb ~/.Xresources

Mnoho populárních emulátorů terminálu bohužel práci v UTF-8 nezvládá (aterm, eterm, mrxvt) a tedy je vhodné se poohlédnout po vhodné alternativě (rxvt-unicode).

GTK/GNOME 2

Aplikace napsané nad toolkitem GTK2 (tedy i gnomovské aplikace) fungují bez dalšího nastavování.

KDE 3

Při instalaci KDE je potřeba vybrat balík kde-i18n-cs, který obsahuje česká hlášení základních KDE programů.

Při prvním přihlášení do prostředí KDE se spustí průvodce, ve kterém si nastavíte jazyk (čeština) a zemi (Česko). Od dob, kdy Debian standardně instaluje font ttf-dejavu, není potřeba žádné další nastavení. Nicméně kdyby se náhodou místo písmen s háčky a čárkami zobrazovaly otazníky nebo obdélníky, můžete tomu pomoci instalací vhodných fontů a pak v Ovládacím centru v části Vzhled a chování v uzlu Písma u všech položek vyberte takové písmo, které správně zobrazuje větu o úpějícím poníkovi. (Ve větě se zaměřte obzvláště na písmena č a ř, protože je na nich pěkně vidět, pokud jsou „vypůjčená“ z jiného písma.)

OpenOffice.org

Počeštění tohoto kancelářského balíku dosáhnete instalací balíčku openoffice.org-l10n-cs, ve kterém se kromě českého překladu programu nachází také počeštěné šablony dokumentů a automatická oprava překlepů. Užitečný bude i český slovník v balíku myspell-cs-cz.

Může se stát, že menu sice bude počeštěné, ale některá akcentovaná písmena se budou zobrazovat chybně. V takovém případě vyberte z menu Nástroje položku Volby... a následně v části OpenOffice.org uzel Náhrada písem. Zde zaškrtněte možnost Použít tabulku náhrad, do pole Písmo vepište text Andale Sans UI a v poli Nahradit za si vyberte nějaké pěkné písmo obsahující české znaky (například URW Gothic L). Nyní musíte zvolenou náhradu písma přesunout do dolního seznamu kliknutím na tlačítko se zelenou fajfkou, zatrhnout na příslušném řádku obdélníček Obrazovka a celý dialog potvrdit tlačítkem OK.

K3b, KOffice, Iceweasel, Icedove, Sylpheed, …

Některé programy mají lokalizační soubory odděleny do samostatných balíků, v nichž se kromě lokalizovaných hlášek někdy skrývá i přeložená nápověda.

(Ne)přítomnost těchto balíků nemá vliv na správné čtení/zadávání českých znaků (to funguje automaticky).

wdm

wdm se (podobně jako xdm, gdm a kdm) stará o grafické přihlašování uživatelů do systému. Aby se přihlašovací obrazovka zobrazila v češtině, musíte v souboru /etc/X11/wdm/wdm-config upravit proměnnou DisplayManager*wdmLocale, aby obsahovala požadované prostředí, tj.

  DisplayManager*wdmLocale: cs_CZ.UTF-8

Další aplikace

Ispell

Český slovník pro ispell se nachází v balíku iczech, nicméně v prostředí UTF-8 je lepší používat aspell.

Aspell

Český slovník pro aspell se nachází v balíku aspell-cs.

(La)TeX

V Debianu se nyní nachází dvě varianty TeXu — TeX Live 2005 a teTeX 3.0. Jelikož se teTeX již dále nevyvíjí a je možné, že bude z příštích vydání Debianu odstraněn, doporučujeme použít TeX Live.

Zprovoznění českých formátů a fontů je jednoduché. Kromě samotného TeX Live (např. balík texlive) stačí doinstalovat balík texlive-lang-czechslovak a vše se zařídí samo.

Chcete-li v LaTeXu zpracovávat vstupní soubory v kódování UTF-8, doinstalujte si ještě balík latex-ucs a do hlavičky dokumentů přidejte řádku

  \usepackage[utf8x]{inputenc}

Oproti TeX Live vyžaduje nastavení teTeXu trošku ruční práce. Po nainstalování teTeXu (balíky tetex-base, tetex-bin, tetex-extra) musíte v souboru /etc/texmf/fmt.d/01tetex.cnf odkomentovat řádky začínající

a spustit příkaz update-fmtutil, který aktualizuje konfigurační soubor /var/lib/texmf/web2c/fmtutil.cnf.

Nakonec je třeba spustit příkaz texconfig init, čímž se vygenerují příslušné formáty (programy csplain, cslatex, pdfcsplain a pdfcslatex).

darcs

Distribuovaný systém pro správu verzí darcs implicitně zobrazuje všechny netisknutelné ascii znaky pomocí hexadecimálních escape sekvencí, což velmi ztěžuje čtení změn v souborech obsahujících například český text. Pokud je text v kódování UTF-8, můžete nastavit proměnnou prostředí DARCS_DONT_ESCAPE_8BIT na hodnotu 1, což promění escape sekvence zpět na háčkovaná a čárkovaná písmena, ovšem může způsobit problémy s řídícími znaky z kódové sady ISO8859-1:

  export DARCS_DONT_ESCAPE_8BIT=1

fortunes

Fortunes je sbírka zajímavých citátů, které se obvykle zobrazují uživatelům při přihlášení do systému. Několik tisíc českých a slovenských hlášek naleznete v balíku fortunes-cs.

GNU recode

Program recode z balíku recode slouží k převodu textu z jednoho kódování do jiného. Například převod souboru revolution_os.sub z kódování používaného na Windows (CP 1250) do univerzálního UTF-8:

  recode 1250..u8 revolution_os.sub

iconv

Stejně jako recode, slouží iconv ke konverzi textu mezi různými kódováními. Na rozdíl od předchozího má sice méně funkcí, ale zato je přímou součástí glibc, tudíž by měl být nainstalován na každém systému. Převod souboru revolution_os.sub z minulého příkladu zpět do windows kódování by se provedl:

  iconv -f UTF-8 -t WINDOWS-1250 revolution_os.sub >revolution.sub

Seznam všech kódování, mezi kterými můžete převádět, získáte příkazem iconv --list.

convmv

Užitečný program, který umí převést názvy souborů do různých kódování, což se může hodit třeba při přechodu na UTF-8 (a potažmo zpět na ISO8859-2), jak předvádí následující příklad. Nejprve jsou rekurzivně překódovány všechy názvy souborů v adresáři z původního ISO8859-2 do módního UTF-8 a poté je jeden konkrétní název souboru překódován až do UTF-32. (Takovýto mix se v praxi rozhodně nedoporučuje, protože vede jen ke zmatkům!)

  convmv --notest -f iso-8859-2 -t utf8 -r adresář
  convmv --notest -f utf8 -t UTF-32 adresář/soubor

Oblasti se souborovým systémem FAT

Připojení diskové oblasti se souborovým systémem FAT tak, aby se správně zobrazovala nabodeníčka, provedete příkazem mount -t vfat -o utf8 /dev/sda1 /mnt/zip, kde /dev/sda1 je disková oblast a /mnt/zip je přípojný bod. Pokud chcete toto připojení zvěčnit, zadejte jej do souboru /etc/fstab:

  /dev/sda1  /mnt/zip  vfat  rw,utf8,quiet  0  0

Oblasti se souborovým systémem NTFS

Připojení diskové oblasti se souborovým systémem NTFS je podobné jako připojení oblasti se souborovým systémem FAT s tím rozdílem, že se nyní místo kratšího utf8 používá parametr nls=utf8.

  /dev/sda1  /mnt/zip  ntfs  ro,nls=utf8 0  0

CD / DVD

Disky nahrané pouze ve formátu iso9660 mohou obsahovat pouze podmnožinu ASCII znaků, tj. žádnou češtinu v názvech souborů neočekávejte. Disky používající rozšíření Joliet (standardně používané masterovacími programy na MS Windows) mají názvy souborů uložené v kódování UTF-16, takže při připojování je musíte převést do UTF-8 pomocí volby iocharset=utf-8 nebo zkráceně jen utf8. Řádka v souboru /etc/fstab by mohla vypadat třeba takto:

  /dev/hda  /media/cdrom0  udf,iso9660  user,iocharset=utf-8,noauto  0  0

Pokud jsou na disku použita unixová rozšíření RockRidge, jsou názvy souborů uloženy v takovém kódování, jaké bylo zadáno programu mkisofs parametrem -output-charset. Protože příkaz mount neumí u rozšíření RockRidge nastavit použité kódování, je potřeba soubory z CD zkopírovat na pevný disk a překódovat pomocí convmv (pokud zrovna nejsou názvy uloženy v UTF-8, pak se automaticky zobrazí správně).

O tuto stránku se stará Miroslav Kuře.