OS Linux - 6.část: Čeština v Linuxu
Cesky a česky
Na další stranuNávrat na titulní stranuVyhledávání informacíNa další stranu

Mluvíme-li o českém prostředí v operačním systému, máme na mysli celou řadu rozličných detailů, které tak či onak souvisí s národními zvláštnostmi. První, co nás jistě napadne, je jiné rozložení kláves na klávesnici v porovnání se standardním, tedy americkým prostředím. Další odlišností je samozřejmě znaková sada, která v případě češtiny musí nabízet "naše" háčky, čárky a kroužky. Tím ovšem výčet toho, co by měla dobrá lokalizace nabízet, nekončí.

Důležitá je i podpora různých formátů času, data, měny apod., chybová hlášení či možnost komunikace s různými programy v daném jazyce, slovník pro kontrolu pravopisu a také lokalizovaná nápověda či manuálové stránky. Unixy (Linux nevyjímaje) řeší tuto proble matiku pomocí jediného systému, který pracuje shodně pro všechny jazyky a oblasti světa, systému Locales.

V čem spočívá jeho pricip? V podstatě v jednotném rozhraní mezi programy a textovými daty, která programy používají. Když program chce vypisovat nějaký text, "konzultuje" svůj záměr se systémem Locales. Ten podle aktuálního nastavení lokalizace upraví text (přeloží, zpřehází pořadí údajů) a upravenou podobu vrátí programu. Výhodou je, že podoba textů je zcela oddělena od programu a lze je tedy dodatečně přizpůsobovat dalším jazykovým mutacím, přičemž se samotný program nemění.

Důležitou součástí systému Locales je soustava katalogů, které definují převody textů mezi originálem a lokalizací. Výběr správného katalogu je řízen sadou proměnných uživatelského prostředí. Jsou to: LANG, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, LC_MESSAGES, LC_ALL. Nastavením těchto proměnných uživatel volí, jak se má chovat některá konkrétní část lokalizace (nebo všechny najednou - LC_ALL). Formát hodnoty, kterou se proměnné plní, je: jazyk[_ZEMĚ[.kódování]], například cs, cs_CZ, nebo cs_CZ.iso88592 jsou hodnoty pro češtinu. České katalogy nejsou součástí žádné distribuce a je tedy nutné je do systému dodatečně instalovat (adresář /usr/share/locale/).

Zajímavé je i vlastní kódování českých znaků. Zatímco v oblasti MS- -DOS, Windows i MacOS poměrně dlouhou dobu byl (a ještě je) zmatek, unixové operační systémy šly cestou dodržování norem ISO. V době, kdy Microsoft své uživatele mátl celou škálou "standardních" kódů pro češtinu, v Unixu bylo vše jasné od začátku: kódovací tabulka je součástí normy ISO-8859-2, tedy normy pro střední a východní Evropu. Ve vícejazyčném prostředí nastupuje šestnáctibitový Unicode, který tabulku ISO-8859-2 obsahuje.

Ale zpět k Linuxu. Aby systém Locales správně fungoval, musí mít podporu na úrovni terminálu. Samozřejmě, celá lokalizace by byla k ničemu, kdyby terminál neumožňoval zobrazit písmena s diakritikou a kdyby nebylo možné zadat je z klávesnice. Základní sadu terminálů v Linuxu představuje soubor textových konzolí, přístupných klávesami Alt+Fn či Ctrl+Alt+Fn. Programy určené pro nastavení fontů a klávesnice jsou součástí balíku kbd (nejnovější verze je 0.95 a od verze 0.90 obsahuje podporu pro Unicode). Klávesovou mapu změníte programem loadkeys a font lze nahrát příkazem setfont.

Mapa klávesnice i font jsou společné pro všechny konzole a tedy i pro všechny uživatele. Obyčejný uživatel by tedy neměl mít možnost klávesovou mapu či font na konzoli měnit. Nastavení by měl provést správce systému nebo by je měl zapsat do bootovacích skriptů, aby se provedlo automaticky při zavádění systému.

Součástí balíku kbd je také sada fontů určených pro textovou konzoli a sada klávesnicových map. Bohužel zatímco správný font pro češtinu zde naleznete, klávesovou mapu už ne. Balík kbd je součástí každé slušné distribuce, zbývá tedy sehnat mapu pro českou klávesnici.

Asi nejznámějším zdrojem základních komponent pro práci s českými texty je balík cs-tools, jehož součástí jsou nejen mapy pro českou a slovenskou klávesnici, ale i podpora pro české a slovenské prostředí v X Window, formátovací program groff a konverzní utilita cstocs.

Groff je program pro formátování textu. Původně se užíval pro textové výstupy na obrazovku či tiskárnu, v této funkci je však překonán a jeho úlohu převzaly jiné programy pro sázení textu (např. TeX). Nezastupitelný však zůstal ve zpracování (formátování) manuálových stránek. Bohužel je jedním z mála programů, které nezachytily nástup "neamerických" prostředí, takže pro správné formátování českého textu (např. manuálových stránek) je nutný upgrade. Nejjistější je použití "českého" groffu z balíku cs-tools. V kuloárech se však proslýchá, že překladatelé českých manuálových stránek lobbují přímo u autorů implementace groffu pro Linux, takže se snad dočkáme i oficiální verze.

Pokud budete nuceni vyměňovat texty s uživateli z platforem DOS, Windows, či MacOS, narazíte na problém různého kódování diakritiky. Parafráze "Kolik kódů znáš, tolikrát jsi počítačem" je zde na místě. Abyste nebyli ze hry, máte možnost sáhnout do balíku cs-tools a pomocí programu cstocs vesele kódovat. Přitom zjistíte, že možných kódů není právě málo. Vedle sedmibitového ASCII, západoevropského ISO-8859-1 a standardního macovského kódu, které českou znakovou sadu pokrývají jen částečně, naleznete osm dalších "opravdových češtin".

Lokalizace X Window
X Window lze lokalizovat několika způsoby. Nejjednodušší je to v případě, že si chcete jen prohlížet české texty v různých X aplikacích. Potom stačí jen nainstalovat patřičný font. Problémy nastanou u aplikací, které nepoužívají fontů X11, jako je například prohlížeč Post-Scriptu Ghostview. Trochu obtížnější je lokalizace textů generovaných přímo aplikacemi (menu, chybová hlášení apod.), ale i tam se to dá zařídit. Nejtěžší je přesvědčit aplikace, aby akceptovaly český vstup.

Fonty
X Window používá pro určení užívaného fontu systému atributů, mezi které patří i informace o použitém kódování. Uživatel zadá pouze ty atributy, na kterých mu záleží, a doplnění ostatních nechá na systému. Každý font se dá popsat řetězcem atributů oddělených znaménky minus. Atribut, který nechcete zadávat, označíte hvězdičkou. Například všechny fonty s kódováním ISO-8859-2 se dají popsat jako -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2, rodina fontů Helvetica -*-helvetica-*-*-*-*-*-*-*-*-*-*-iso8859-2 atd. Řetězec s definicí fontu se vkládá do definičních souborů jednotlivých aplikací nebo se zadává z příkazového řádku pomocí parametru -font.

Výběr fontu usnadňuje aplikace xfontsel. Z nabídek si postupně vybíráte jednotlivé atributy a v dolním okně vidíte font, který jim odpovídá. Když nastavíte více atributů, zobrazují se v dalších nabídkách jen hodnoty, které jsou v systému k dispozici.

xfontsel
Utilita xfontsel umožňuje pohodlný a názorný výběr fontů.

Na internetu je možné nalézt několik volně šiřitelných fontů nejznámějších typů (Times, Courier, Helvetica aj.). Pokud nejsou přímo v souboru rpm nebo deb, je třeba je nainstalovat. Nové fonty se vloží do adresáře s fonty a příkazem mkfontdir <adresář>; se aktualizuje obsah souboru fonts.dir se jmény fontů. Je možné, že soubory získáte ve formátu BDF, potom se musí konvertovat příkazem bdftopcf do formátu PCF, používaného X serverem. X server umí pracovat s komprimovanými fonty, takže je dobré příkazem compress *.pcf zabalit všechny nové fonty v adresáři. Nakonec se příkazem xset fp rehash dá X serveru na vědomí, že mu přibyly fonty. V RedHat Linuxu naleznete fonty v adresáři /usr/X11R6/lib/X11/fonts. Chcete-li pro nové fonty vytvořit vlastní adresář, musíte do souboru /usr/X11R6/lib/X11/Xconfig vložit řádek FontPath <absolutní cesta k novému adresáři>.

Jsou-li fonty na svém místě, je nutné aplikacím sdělit, že je chceme používat. Nejjednodušší je to u Netscape Navigatoru. Ten má od verze 2 možnost volit si kódování, ve kterém bude HTML dokumenty zobrazovat a pomocí protokolu HTTP 1.1 si umí i automaticky vybrat to správné.

U ostatních aplikací záleží na autorech, do jaké míry nechali volbu kódování na uživateli. Standardní metodou je použití tzv. application defaults, souborů s definicemi implicitního nastavení atributů prvků uživatelského rozhraní v adresáři /usr/X11R6/lib/X11/app-defaults. Editováním na místě se mění atributy pro všechny uživatele. Obyčejný uživatel obvykle nemůže do souborů v app-defaults zapisovat, ale má možnost vytvořit si vlastní konfiguraci. Stačí si okopírovat soubor z app-defaults do svého domovského adresáře do souboru s tečkou před jménem a ten editovat. Programy, u kterých se předpokládá, že budou často upravovány, mají mnohdy svůj vlastní konfigurační soubor. Příkladem může být Window manager AfterStep.

Vstup
Vstup jiných než ASCII znaků řeší X11R6 v jednodušších případech pomocí úprav X serveru nebo s užitím tzv. X Input Method. Pro vstup znaků se potom používá samostatná aplikace, které se říká input server. Slouží například ke vkládání čínských znaků. V našem případě naštěstí vystačíme s osmi bity na jeden znak a s úpravou buď X serveru, nebo některé ze základních knihoven (Xlib, Xt).

Aby bylo možné vkládat češtinu, je potřebná tzv. mrtvá klávesa. Ta sama o sobě nezpůsobí vstup znaku, ale přepne vnitřní stav vstupu, takže následující znak je opatřen čárkou nebo háčkem. V případě, že za mrtvou klávesou následuje znak, který nemůže mít žádný akcent, pošle se na výstup přímo tento znak. Aplikace se potom vůbec nemusejí starat o ošetření vstupu, prostě dostávají řetězce osmibitových znaků, se kterými normálně pracují. Jedinou podmínkou je, aby pracovaly opravdu osmibitově a "neztrácely" nejvyšší bit znaku.

XFree86 sice tvrdí, že mrtvou klávesu podporuje, ale není to pravda. Naštěstí už u nás vzniklo několik řešení vstupu češtiny. Nejjednodušší jsou ta, která definují takové rozložení znaků na klávesnici, při němž není nutné používat mrtvou klávesu. Potom stačí pomocí příkazu xmodmap nahrát mapu klávesnice a je to. Nevýhodou je nestandardní rozložení akcentovaných písmen. Kdo se chce co nejvíc přiblížit standardní české klávesnici, musí si nainstalovat upravený X server. Existují už úpravy pro XFree 3.1 a 3.2. Bohužel pro zatím nejnovější verzi 3.3 jsme ještě nic podobného neviděli.

Je zřejmé, že počeštění Linuxu ještě není dokonalé - přesto si myslíme, že už dnes se Linux dá používat pro běžnou práci s českým textem bez velkých obtíží. V příštím díle budeme připojovat Linux do sítě.

Martin Brachtl, Lukáš Mikšíček, FEL ČVUT Praha

Odkazy na stránky o lokalizaci
http://linux-cz.inecnet.cz/projekt/ Projekt Linux CZ.
http://www.linux.cz Česká domovská stránka Linuxu
http://linux-cz.inecnet.cz/czech-howto/ Návody pro počeštění Linuxu.
http://www.inf.upol.cz/~michlv/ftp/ Katalogy pro české Locales.
http://www.inet.cz/~pjanik/man/ České manuálové stránky
http://www.unicode.org/ Unicode homepage.
http://sizif.mf.uni-lj.si/linux/cee/iso8859-2.html Stránka zdrojů ISO-8859-2.
http://sizif.mf.uni-lj.si/linux/cee/ Lokalizace linuxu obecně.
http://www.cestina.cz/cestina/ Stránka o Češtině nejen na Linuxu

Na další stranuNávrat na titulní stranuVyhledávání informacíNa další stranu
Copyright Vogel Publishing s.r.o. 1998
reprinted and translated with
the author's permission

Leden 1998 str.134