<!-- $Id: TeX.sgml,v 1.4 1998/07/29 20:32:16 mc Exp $ -->
<!doctype linuxdoc system>

<article>

<title>Czech HOWTO
<author>Kolektiv autorů
<date>Verze 1.29, 18. května 1999.
<abstract>
Tento dokument pojednává o tom, jak počeštit, poslovenštit, zkrátka
lokalizovat Linux. Některé z~popsaných postupů lze uplatnit i na jiné
unixové systémy.
</abstract>

<toc>

<sect>Úvod

<p>
Tento dokument pojednává o tom, jak zprovoznit české případně slovenské
prostředí v~OS Linux. Podle přetrvávajících diskusí na toto téma v~konferenci
<tt>linux</tt> na <tt>linux-info@linux.cz</tt>, je zřejmé, že se stále
nejedná o tak jednoduchou záležitost, jak by si většina uživatelů přála.
Některé z~popsaných postupů je možné uplatnit i na jiné unixové systémy.

<p>
Na vytváření tohoto dokumentu se podílelo více osob. Pokud se podařilo
zjistit jména autorů jednotlivých kapitol, jsou uvedeni v~jejich záhlaví.

<sect1>Kopírování a záruka

<p>
Toto HOWTO je "free" dokument; je možné jej šířit a/nebo modifikovat
podle podmínek GNU General Public License verze 2
(<url url="http://www.gnu.org/copyleft/gpl.html">, český překlad
<url url="http://www.gnu.cz/gplcz.html">), v~podobě, v~jaké byla
publikována Free Software Foundation.

<p>
Tento dokument je distribuován v~naději, že bude užitečný, avšak bez
jakékoliv záruky; dokonce i bez implicitní záruky dané obchodními zákony
nebo záruky způsobilosti pro jakékoliv použití. Podmínky jsou popsány
detailněji v~GNU General Public License.

<p>
Kopii GNU General Public License lze získat od Free Software Foundation,
Inc., 675~Mass~Ave, Cambridge, MA~02139, USA.


<sect>Cíle lokalizace

<p>
Lokalizaci Linuxu pro češtinu případně slovenštinu lze rozdělit na
několik relativně samostatných částí:

<enum>

<item>Zobrazování národních znaků a jejich vkládání z~klávesnice.
Obě tyto úlohy jsou spolu natolik svázány, že je vhodné je řešit
současně. Odděleně je ovšem probrána lokalizace konzole --- kapitola
<ref id="konzole" name="lokalizace konzole"> a grafického prostředí
X~Window System --- kapitola <ref id="Xwindow" name="X Window System">.
Po provedení tohoto kroku lze používat češtinu v~programech, které
nekladou zvláštní odpor, u nichž se nepožaduje, aby komunikovaly
s~uživatelem česky, třídily, případně prováděly další specifické úkoly,
jako například přidávání informací o použitém kódování do e-poštovních
nebo newsových zpráv. Příkladem takového programu je editor vi, jehož
činnost je ovšem ještě vhodné přizpůsobit pro používání znakové sady
ISO-8859-2 nainstalováním locales.

<item>"Lokalizace knihovny libc nebo glibc --- kapitola <ref id="locale"
name="locales">. Zajistí, že písmena s~háčky a čárkami budou považována za
tisknutelné znaky a písmena, že programy budou vědět, která písmena jsou
malá a která velká, a budou umět převádět jedna na druhá, že bude fungovat
třídění podle abecedy, že se peněžní a časové údaje i kalendářní data
a velká čísla budou vypisovat tak, jak je v~češtině zvykem. Díky tomu,
že knihovnu libc/glibc používají téměř všechny programy, projeví se její
lokalizace v~téměř celém systému. S~lokalizací libc úzce souvisí katalogy
zpráv, které které umožňují, aby vypisovaná hlášení, online nápověda, i
menu v~některých programech pro X Window System byly ve zvoleném jazyce.

<item>Lokalizace jednotlivých programů je popsána v~kapitole <ref
id="programy" name="programy">. V~některých programech se používá
širší škála jazykově závislých vlastností, než jakou podporují locales
(způsob lámání řádků, dělení slov, mezerování, hlavičky v~poště a
newsech apod.). Příkladem je TeX --- kapitola <ref id="TeX" name="TeX">
nebo Emacs --- kapitola <ref id="emacs" name="emacs">. Jiné programy
naopak locales nepoužívají a některé jejich vlastnosti se nastavují
pomocí konfiguračních souborů, proměnných prostředí apod. (pine, starší
verze less a joe). Do této kapitoly je zahrnuta také lokalizace programů
pracujících pod X Window System prováděná pomocí X-resources (zpravidla
překlady menu a hlášení, výběr fontů apod.).

<item>Český tisk --- kapitola <ref id="tisk" name="tisk">.

<item>Programy pro konverze textových souborů jsou popsány v~kapitole
<ref id="konverze" name="konverze">. Linux používá pro kódování češtiny
a slovenštiny kódování ISO-8859-2. Nicméně v~jiných systémech se používají
jiné znakové sady a tak je často potřeba textové, HTML případně i další
(DBF apod.) soubory překódovávat.

<item>České manuálové stránky. Jejich instalace a konfigurace programů,
které umožňují jejich prohlížení je popsána kapitole <ref id="manstranky"
name="manuálové stránky">.

<item>Kontrola pravopisu. Použití programu ispell je popsáno v~kapitole
<ref id="spellcheck" name="Kontrola pravopisu">.

<item>Možnost používání češtiny v~objektech systému, zejména ve jménech
souborů.

<item>Úplné počeštění systému, včetně jmen příkazů a parametrů (<tt/ls/
bude <tt/va/ --- jako výpis adresáře, Unix bude Stejník nebo Jednotník,
atd. :-)

</enum>

<sect>Lokalizace textové konzole<label id="konzole">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
5.~1.~1999;
Pavel Janík ml. <url url="mailto:Pavel.Janik@math.muni.cz"
name="Pavel.Janik@math.muni.cz">: starší verze;
a mnozí další</sf>

<p>
Pro lokalizaci textové konzole je třeba nastavit ovladač klávesnice, aby
generoval kódy znaků podle požadovaného rozložení kláves, a ovladač
displeje, aby umožňoval zobrazování národních znaků včetně písmen
s~diakritikou (s~akcenty).

<p>
Ačkoli jádro Linuxu podporuje od verze 1.3.? Unicode umožňující současné
používání nejen všech možných písmen s~akcenty, ale i téměř všech
světových abeced, v~současnosti stále převažuje využívání osmibitových
kódování.

<p>
Pro češtinu, slovenštinu, polštinu, maďarštinu, rumunštinu, slovinštinu,
chorvatštinu, albánštinu a další východoevropské jazyky psané latinkou
je určena znaková sada ISO-8859-2, známá také pod názvem ISO~LATIN-2.
Západoevropské jazyky naproti tomu používají kódování ISO-8859-1. Obě
tato kódování jsou rozšířením kódu ASCII a shodují se i v~některých
dalších znacích, takže ISO-8859-2 lze používat například i pro němčinu.

<p>
Přestože kódování ISO-8859-2 je pro zmíněné jazyky mezinárodním
standardem a preferovaným kódováním, v~mnoha neunixových systémech
se používají jiná kódování; v~MS-Windows sada Windows-1250, která se
bohužel v~několika znacích odlišuje od ISO-8859-2, v~systému MS-DOS, jeho
klonech i v~DOSových oknech MS-Windows kódová stránka 852 nazývaná též PC
LATIN-2, která má ne-ASCII znaky kódovány zcela odlišně. Další kódování se
používají v~jednotlivých zemích (v~České republice a na Slovensku je stále
populární sada Kamenických), na jiných operačních systémech (Macintosh),
pro některá zařízení (tiskárny) i programy (kódování Cork v~TeXu).

<p>
Zatímco znaková sada ISO-8859-2 je určena pro několik jazyků,
rozložení klávesnice je pro každý jazyk jiné. Standardní česká nebo
slovenská klávesnice pro PC vycházející z~českého psacího stroje je pro
psaní textů, v~nichž se vyskytují speciální "počítačové" znaky, dosti
nepohodlná. Proto mnoho lidí používá různé "programátorské klávesnice",
které bohužel nejsou standardizovány a jak ukázaly diskuse v~konferenci
<tt>linux</tt>, širší dohoda o jejich rozložení je téměř vyloučena.

<p>
Při zkoušení klávesnice nezapomeňte, že mnoha programům je třeba
pomoci, aby pracovaly s~osmibitovými znaky --- kapitola <ref id="osmbit"
name="Lokalizace různých aplikací">.  Problémy by neměly být s~editorem
vi, proto nově nainstalovanou klávesnici testujte nejdříve v~tomto
editoru v~režimu vkládání znaků.

<p>
Distribuce, kterou používáte, může mít podporu pro české prostředí
už zabudovanou. Proto je vhodné nahlédnout nejprve do kapitoly~<ref
id="distribuce" name="Jak počeštit různé distribuce"> a postupy popsané
v~následujících odstavcích zkoušet teprve pokud nenaleznete jednodušší
řešení tam.

<sect1>Zobrazování znaků v~kódování ISO-8859-2

<p>
ISO-8859-2 fonty pro konzolu a program setfont, kterým se zavádí,
jsou součástí balíku kbd už od dávných verzí Linuxu. Pokud v~některé
distribuci balík kbd není, je možné jej získat například na
<url url="ftp://ftp.muni.cz/pub/linux/system/keyboards/kbd-0.96.tar.gz">.

<p>
Pro adaptéry VGA a lepší stačí zavést font příkazem

<tscreen><code>
setfont lat2-16.psf
</code></tscreen>

<p>
(nikoli <tt>lat2-08.psf</tt> výšky 8, jak je doporučováno v~dokumentaci
k~cs-tools), pro adaptéry EGA je vhodný font <tt>lat2-14.psf</tt> (může
někdo potvrdit, že na adaptéru EGA program setfont funguje?). V~novějších
verzích kbd jsou pro ISO-8859-2 k~dispozici ještě fonty <tt>iso02*</tt>.
Pokud není použit program vtfontd, zavedení fontu se projeví na všech
virtuálních terminálech (konzolách).

<sect1>Národní klávesnice

<p>
Pokud na vašem systému není mapa české klávesnice, lze použít část balíku
cs-tools
<url url="ftp://ftp.muni.cz/pub/localization/linux/obsolete/cs-tools/cs-tools-0.19.tar.gz">.
Soubory <tt>*.map</tt> z~adresáře <tt>console</tt> z~tohoto balíku je
třeba zkopírovat do adresáře <tt>/usr/lib/kbd/keytables</tt>. Zvolená
mapa klávesnice se pak zavede příkazem

<tscreen><code>
loadkeys cz-lat2
</code></tscreen>

<p>
v~některém ze startovacích skriptů. V~distribuci Red Hat stačí uvést
řádek KEYTABLE v~souboru <tt>/etc/sysconfig/keyboard</tt>:

<tscreen><verb>
KEYTABLE="cz-prog"
</verb></tscreen>

<p>
Klávesnice fungují jako americké, do českého režimu se přepnou
stisknutím klávesy Pause nebo držením klávesy AltGr (pravý Alt).
Pro zpětné přepnutí lze použít opět Pause nebo držení AltGr.

<p>
Klávesnice z~kbd údajně nefungují s~jádry vývojové řady 2.1.x.
Na počítačích s~vývojovými jádry je nutné používat balík ucw
popsaný dále.

<sect2>Jak funguje načítání znaků z~klávesnice?

<p>
Při stisku klávesy, při držení v~rytmu autorepeatu a při uvolnění
klávesy generuje klávesnice na počítačích PC přerušení IRQ 1. Jádro
načítá z~portu 0x60 tak zvané scankódy kláves, což je jeden nebo celá
posloupnost bytů. Například při stisku klávesy 'q' bude načteno 0x10
(16 desítkově), při uvolnění kód o 0x80 větší, tedy 0x90. Některé
klávesy, jako např. Delete posílají dvoubajtové escape-scankódy 0xe0,
0xNN, klávesa Pause posloupnost 0xe1, 0x1d, 0x45. Jádro nejdříve
scankódy převádí na tak zvané keykódy (funkce getkeycode
v~<tt>drivers/char/keyboard.c</tt> --- docela zajímavé čtení). Toto
mapování lze měnit i na uživatelské úrovni, ale to má význam
snad jenom při používání exotického hardware. Pro národní klávesnice je
zajímavé další mapování, při němž se keykódy převádějí na kódy znaků.
Od jádra verze 0.99pl10 lze implicitní mapu
<tt>drivers/char/defkeymap.map</tt> měnit.

<sect1>Alternativa: Balík ucw-cs-1.1.tar.gz<label id="ucw">

<p>
Tento balík využívá schopnosti jádra Linuxu pracovat se znaky v~kódování
Unicode. Pro zobrazování se používá zvláštní textový režim adaptérů
EGA/VGA, který umožňuje současně zobrazit 512 různých znaků. Jako
devátý bit kódu znaku se používá bit 3 barevných atributů. Tak je možné
zobrazovat všechny znaky podle kódování ISO-8859-1 i ISO-8859-2 současně
s~rámečky, které mohou být na pozicích 0xB0 až 0xDF, pro něž adaptér VGA
zdvojuje levý sloupec, aby byla šířka znaku 9 bodů. V~budoucnosti by měl
být použit grafický režim.
Díky tomu se tento balík elegantně vyrovnává s~problémy popsanými v~kapitole
<ref id="ramecky" name="Rámečky v~programech MC & spol. se zobrazují špatně">.

<p>
Balík se nachází na
<url url="ftp://atrey.karlin.mff.cuni.cz/pub/local/mj/linux/ucw-cs-1.1.tar.gz">,
jeho popis je na <url url="http://atrey.karlin.mff.cuni.cz/~mj/linuxcs/">.
Po rozbalení balíku se přepněte do adresáře <tt>ucw-cs-1.1</tt> a zadejte

<tscreen><code>
install -c -o root -g root -m 644 fonts/* /usr/lib/kbd/consolefonts
install -c -o root -g root -m 644 keymaps/* /usr/lib/kbd/keytables
install -c -o root -g root -m 755 mapscrnuni/mapscrnuni /usr/local/bin
install -c -o root -g root -m 644 mapscrnuni/latin2.table /usr/lib/kbd/consoletrans
</code></tscreen>

<p>
do startovacích skriptů <tt>/etc/rc*</tt> je nutné přidat příkazy

<tscreen><code>
setfont ucw16.psf
mapscrnuni < /usr/lib/kbd/consoletrans/latin2.table
loadkeys cs-head cz-type cs-compose
</code></tscreen>

<p>
a do souborů <tt>/etc/profile</tt> a <tt>/etc/csh.cshrc</tt> nebo
<tt>$HOME/.bashrc</tt> a <tt>$HOME/.cshrc</tt>, případně do
<tt>/etc/issue</tt> je nutné přidat příkaz, který zajistí přepnutí na
uživatelské mapování obrazovky:

<tscreen><code>
/bin/echo -en "\033(K"
</code></tscreen>

<p>
Pokud se při spuštění programu loadkeys objeví chybové hlášení jako

<tscreen><verb>
Keymap 12: Permission denied
</verb></tscreen>

<p>
je nutné zadat tento příkaz jako root. Zdá se, že loadkeys spuštěný
obyčejným uživatelem neumí zvětšit konverzní tabulku pro klávesnici
v~jádře, a výsledkem je zmíněné hlášení.

<p>
Balík je zajímavý tím, že mapa klávesnice je rozdělena do několika
souborů, které příkaz <tt>loadkeys </tt> spojí a zavede jako jednu mapu.
Na místě <tt>cz-type.map</tt> (český psací stroj) lze použít
<tt>cs-ucw.map</tt> (písmena s~akcenty se píšou se stisknutým Caps Lock),
<tt>cz-prog.map</tt> (česká programátorská), <tt>sk-type.map</tt>
(slovenský psací stroj) nebo <tt>sk-prog.map</tt> (slovenská
programátorská), podle toho, komu co vyhovuje.

<sect1>Tipy a problémy

<sect2>Vypadnutí fontu při přepnutí do X a zpět

<p>
U některých X-serverů dojde při přepnutí z~virtuálního terminálu do
X a zpět k~vypadnutí konzolového fontu. Situaci lze řešit opětovným
ručním zavedením fontu, nebo je možné použít program vtfontd -
<url url="ftp://ftp.excom.spb.su/pub/linux/Utils/Console/vtfontd-1.0.1.tar.gz">,
který také umožňuje používat na jednotlivých konzolách různé fonty.

<sect2>V Midnight Commanderu nelze přepínat fonty

<p>
Inu tento problém vlastně ani není problémem, je to samozřejmost,
protože v~mc nejsme na virtuální konzole, ale na normálním terminálu
ttypx, tudíž nemáme právo použít ioctl PIO_FONT, protože nejsme ani
vlastníkem tty, ani superuživatelem (<tt>drivers/char/vt.c</tt> řádek
212 --- opět velmi zajímavé čtení).

<sect2>Rámečky v~programech MC & spol. se zobrazují špatně<label id="ramecky">

<p>
Při používání některých programů (jako například Midnight Commanderu)
bývají problémy se zobrazováním rámečků. U Midnight Commanderu je možné
použít parametr <tt>-a</tt>, který způsobí, že mc bude pro zobrazování
rámečků používat ASCII znaky <tt>+</tt>, <tt>-</tt> a <tt>|</tt>, což sice
nepůsobí příliš esteticky, ale je to rozhodně lepší, než když se místo
rámečků zobrazují písmena.

<p>
Vzhledem k~tomu, že programy používající čárovou grafiku jako MC nebo
MenuConfig jádra, jsou po nainstalování českých fontů na textovou konzolu
Linuxu nečitelné, je nutné použít font, který tyto rámečky obsahuje, a
upravit nastavení databází termcap a terminfo. Již upravené databáze
jsou ke stažení na URL
<url url="http://linux-cz.inecnet.cz/ftp/mc/">.

<p>
Tyto databáze je nutno zkopírovat <tt>termcap</tt> do <tt>/etc/termcap</tt>
a <tt>terminfo</tt> do <tt>/usr/lib/terminfo/l/linux</tt> a znovu se
přihlásit. Ke konverzi mezi zdrojovou a binární podobou
terminfo slouží příkazy infocmp a tic. I potom mohou být problémy
způsobené tím, že u videoadaptéru VGA jsou znaky s~kódy 0xB0 až 0xDF
vyhrazeny pro rámečky a VGA při zobrazování zdvojuje pravý sloupec každého
z~těchto znaků, aby se dosáhlo šířky znaku 9 pixelů, ale u znakových sad
ISO-8859-2 jsou na těchto pozicích běžné znaky. Elegantním řešením je
použití unikódových fontů Pavla Mareše popsaných v kapitole <ref id="ucw">.

<sect2>Snadné přepínání češtiny a angličtiny

<p>
Pokud nepoužíváte klávesnici, která umožňuje přepínání mezi dvěma režimy
(čeština nebo slovenština a angličtina), můžete pro přepínání používat
následující dva skripty, které zajistí i přepnutí fontů.

<itemize>
<item>Cz:
<tscreen><verb>
loadkeys cz-lat2
setfont lat2-16.psf
</verb></tscreen>
<item>Us:
<tscreen><verb>
loadkeys us
setfont
</verb></tscreen>
</itemize>

<p>
Skripty budou samozřejmě fungovat pouze tehdy, budete-li mít nainstalovánu
podporu národní klávesnice a ISO-8859-2 znaky pro konzolu. Přitom je nutné
pamatovat, že zatímco klávesnice se přepíná pouze pro jednu virtuální
konzolu, fonty (není-li použito vtfontd) se přepínají pro všechny.

<sect2>Český text je i po nastavení správného fontu nečitelný

<p>
Příčinou může být, že text je v~jiném kódování. Text je třeba
překódovat pomocí utility cstocs popsané v~kapitole <ref id="cstocs"
name="cstocs"> do kódování ISO-8859-2 a poté jej prohlížet a editovat
standardním způsobem. Nebo případně, vznikl-li tento font na jednom
z~Billových produktů, můžete použít k~prohlížení font upravený tak, aby
zobrazoval správně české znaky, jak v~kódování CP1250 (Windoze), tak i
ISO-8859-2 (unixové OS). Tento font opět najdete někde na
<url url="ftp://ftp.inet.cz/">.

<sect2>Lepší konzolové fonty

<p>
Vzhled fontů z~balíku kbd je dost špatný, velká písmena s~akcenty jsou
nižší než bez akcentů, pokud si chce někdo vytvořit vlastní font, může
mu pomoci tento popis:

<p>
Soubory s~fontem jsou umístěny v~<tt>/usr/lib/kbd/consolefonts</tt>.
Používají se dva formáty těchto souborů, formát psf, který je popsán
v~souboru <url url="file:/usr/lib/kbd/consolefonts/psffiles.doc">, a ještě
jednodušší formát, který nepoužívá žádnou hlavičku, a soubory obsahují
prostě obrazy všech 256 znaků uložených v~pořadí podle kódů znaků.
Pro každý znak z~fontu je v~souboru tolik bytů, kolik bodů je výška
fontu (včetně volných řádků nahoře a dole; nejčastěji 8 až 16 bodů),
první byte odpovídá hornímu řádku znaku. Každý znak má šířku 8 bodů,
nejvyšší bit se zobrazuje vlevo.

<p>
Je také možné použít editor fontů chedit, který se nachází na
<url url="ftp://ftp.fi.muni.cz/pub/linux/apps/misc/chedit.tar.gz">.
Je poněkud zastaralý a umí editovat pouze fonty ve formátu psf.

<sect2>Změna qwerty na qwertz

<p>
Obě české klávesové mapy, tedy <tt>cz-lat2.map</tt> i
<tt>cz-lat2-prog.map</tt>, mají standardní rozložení qwerty, jste-li
zvyklí na rozložení qwertz, není nic jednoduššího než zaměnit písmenka
'y' a 'z' v~klávesové mapě, tedy v~souboru <tt>cz-lat2.map</tt>, případně
<tt>cz-lat2-prog.map</tt>:

<tscreen><verb>
...
keycode 21 = z
...
keycode 44 = y
...
</verb></tscreen>

<sect2>Jediný dvojhmat z~Woken, který znám, je Alt+Shift...

<p>
Ano, tento dvojhmat je mým prvním stisknutím klávesnice, jestliže jsem nucen
sedět u počítače s~Billovým OS. (Doufám, že se autoři skutečných operačních
systému neurazí.) Slouží k~přepnutí se mezi primární a sekundární
klávesnicí. Pro některé skalní příznivce firmy SoftMicro jsem přichystal
úpravu <tt>cz-lat2.map</tt>:

<p>
upravíme řádek s~keycode 42 (klávesa Shift)

<tscreen><verb>
keycode 42 = Shift Shift Shift Shift Shift Shift Shift Shift AltGr_Lock\
 Shift AltGr_Lock Shift Shift Shift Shift Shift Shift
</verb></tscreen>

<p>
...vše samozřejmě na jednom řádku. Potom již bude kombinace LeftShift+LeftAlt
fungovat stejně jako klávesa Pause, tedy pro přepínání klávesnic.

<sect2>Zdroje

<p>
<itemize>
<item>
<url url="ftp://ftp.muni.cz/pub/localization/linux/obsolete/cs-tools/">
Balík české podpory pro Linux cs-tools, z~větší části zastaralý.
<item>
<url url="ftp://sunsite.unc.edu/pub/Linux/system/">
Balík kbd --- programy chvt, dumpkeys, getkeycodes, loadkeys, mapscrn,
setfont, setkeycodes a další. Spousta fontů a klávesových map.
<item>
<url url="ftp://ftp.inet.cz/pub/UNIX/">
Různé fonty --- mc.psf (font pro MC), font.winux (CP1250+IL2)
</itemize>

<sect2>Použité materiály

<p>
<itemize>
<item>
Zpravodaj ÚVT MU, březen 1994: Pavel Ševeček --- Ufff, zase ta čeština!
Luděk Matyska --- Čeština v~Unixu
<item>
Manuálové stránky console, console_ioctls, dumpkeys, getkeycodes,
keytables, loadkeys, setfont, setkeycodes, showkey
<item>
Dokumentace balíků cs-tools a kbd.
<item>
Vlastní zkušenosti.
<item>
Zdrojové texty Linux 2.0.29 --- Here you can find virtually everything
you'd like to know.
</itemize>

<sect>Lokalizace X~Window Systemu<label id="Xwindow">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">;
14.~5.~1999, používání mapy cs: Peter Ivanyi
<url url="mailto:Ivanyi@internet.sk" name="Ivanyi@internet.sk">:
1.~1.~1999</sf>

<p>
Základem lokalizace X~Window Systemu je instalace fontů a klávesnicových
map použitelných v~programech v~tomto prostředí. Dále je možné
lokalizovat jednotlivé programy, zejména window manažery.

<sect1>Fonty v~X~Window System<label id="xfonts">

<p>
Aplikace pod X mohou používat jak rastrové (bitmapové) tak vektorové
fonty, pokud je podporuje X-server (novější X-servery umí Type1 a Speedo
fonty, pro TrueType fonty je nutný zvláštní fontserver). Vektorové fonty
je možné snadno zvětšovat a zmenšovat na různé velikosti (škálovat);
novější X-servery umí škálovat i rastrové fonty, ale výsledná kvalita
je velmi odpuzující. Rastrové fonty jsou uloženy, jak název napovídá,
v~podobě dvoubarevných bitových map. I když je možné vytvářet fonty přímo
jako bitové mapy, profesionální rastrové fonty jsou zpravidla vyrastrované
škálovatelné fonty. V~principu lze použít i fonty z~TeXu (zkonvertované
programem pk2bm), ovšem tyto fonty (zejména Computer Modern) jsou
navrženy pro větší rozlišení, obsahují vlasové čáry a proto jsou při
vyrastrování na rozlišení obrazovky (75 nebo 100 dpi) dosti nevzhledné.

<p>
Fonty mohou být buď uloženy přímo na disku X-serveru (nebo v~paměti ROM
u X-terminálů), nebo mohou být zpřístupněny po síti pomocí tak zvaného
fontserveru. Hlavní výhodou fontserveru je, že poměrně velké soubory
s~fonty nemusí být nainstalovány na každém X-serveru; na pomalých
strojích (386) může být použití vnějšího font serveru výhodné i proto,
že při výpočetně náročném zpracovávání fontů dočasně zamrzne jen
příslušný program a ne celý X-server. TrueType fonty jsou dostupné pouze
přes fontserver.

<p>
Rastrové fonty se distribuují zpravidla v~textovém formátu .bdf
(Bitmap Distribution Format). X-server ovšem rychleji pracuje s~fonty
v~binárním tvaru. Preferovaným binárním formátem fontů pro servery X11R6
a X11R5 je formát .pcf, starší X-servery (X11R4) používaly jiné binární
formáty fontů (často závislé na endianitě) --- například .snf. Pro
ušetření diskového prostoru bývají soubory s~fonty zkomprimované
programem gzip nebo compress. Pro konverzi různých formátů fontů jsou
v~distribuci X11 programy jako bdftopcf, bdftosnf a další.

<p>
Soubory s~fonty jsou uloženy v~několika adresářích, jejichž jména musí být
uvedena v~konfiguračním souboru X~serveru (u XFree86 v~řádcích FontPath
v~sekci Files v~souboru <tt>/etc/X11/XF86Config</tt>) nebo zadána příkazem
<tt>xset fp</tt>, který umožňuje, aby si uživatelé nainstalovali své vlastní
fonty. V~každém z~adresářů musí být soubor <tt>fonts.dir</tt>, který se
vytvoří (případně aktualizuje) příkazem

<tscreen><code>
mkfontdir [ adresář ]
</code></tscreen>

<p>
Protože jména fontů jsou velmi dlouhá (viz dále), lze používat přezdívky,
které se definují v~souboru <tt>fonts.alias</tt> pomocí řádků tvaru:

<tscreen><verb>
fixed        -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
</verb></tscreen>

<p>
V~našich podmínkách je významnou vlastností možnost používání fontů
v~různých kódováních. Soubory s~fonty pro různá kódování se zpravidla
umísťují do samostatných adresářů. Přitom u některých programů záleží
na pořadí, v~jakém jsou adresáře uvedeny v~konfiguračním souboru (je
vhodné mít adresáře s~ISO-8859-2 fonty na začátku). Mají-li být naopak
fonty s~různým kódováním v~jednom adresáři, je potřeba dát pozor, aby
se soubory obsahující stejné fonty v~různém kódování nepřepsaly
(dát jim různá jména).

<p>
Neprivilegovaný uživatel, který nemá možnost měnit konfigurační soubor
X-serveru, si může nainstalovat vlastní fonty tak, že soubory s~fonty
umístí do libovolného adresáře, a zadá příkazy

<tscreen><code>
mkfontdir adresář
xset +fp adresář
xset fp rehash
</code></tscreen>

<p>
První příkaz vytvoří soubor <tt>fonts.dir</tt>, který obsahuje seznam
fontů v~adresáři. Příkaz <tt>xset +fp adresář</tt> zajistí přidání
zadaného adresáře na začátek seznamu adresářů s~fonty (alternativou
je <tt>xset fp+ adresář</tt>, který přidá adresář na konec seznamu;
příkaz <tt>xset -fp adresář</tt> naopak adresář ze seznamu odebere).
Poslední příkaz zajistí nové načtení seznamu fontů po jejich změně
bez restartování X~serveru. Aby vzaly nové fonty na vědomí i jednotlivé
programy, je nutné je znovu spustit.

<p>
Pro jednoznačný popis fontu se používá jméno, které se skládá ze 14
složek --- například
<tt>-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-2</tt>.

<table><tabular ca="lll">složka | příklad     |  význam @
foundry  | adobe     |  výrobce (doslova písmolijna) @
family   | times     |  rodina @
weight   |  medium   |  tučnost @
slant    |  r        |  sklon @
setwidth |  normal   |  šířka písma @
addstyle |           |  dodatečný styl @
pixels   |  12       |  velikost v~pixelech @
points   |  120      |  velikost v~desetinách tiskařského bodu @
resx     |  75       |  rozlišení ve směru osy x @
resy     |  75       |  rozlišení ve směru osy y @
spacing  |  p        |  mezerování @
avgwidth |  64       |  průměrná šířka znaku v~desetinách tiskařského bodu @
registry |  iso8859  |  registr znakové sady @
encoding |  2        |  kódování @
</tabular>
<caption>
Složky jména fontu v~X11
</caption>
</table>

<p>
Název fontu vychází z~toho, že jeden výrobce může dodávat více
rodin písem. Rodina zpravidla obsahuje několik řezů písma v~různých
velikostech. Jednotlivé řezy se liší tučností (tloušťkou tahů),
šířkou, sklonem, tím, zda znaky mají patičky (serif) nebo jsou bez nich
(sans serif), a každý řez může být dostupný v~několika velikostech.

<p>
Pro používání v~X je důležitou charakteristikou písma jeho mezerování. U
proporcionálních písem (spacing=p), které se běžně používají při tisku
knih a časopisů, mají různé znaky různou šířku, například znak 'i' je
užší než znak 'm'. Tato písma jsou vhodná například pro zobrazování
WWW stránek. Pro použití v~terminálových emulátorech jako je xterm
je třeba používat písma pevné šířky jako u psacího stroje. Tato písma
jsou vhodná například pro výpisy programů, kde je potřeba, aby znaky
v~různých řádcích byly pod sebou. I u písma pevné šířky mohou některé
znaky přečnívat z~prostoru, který je jim vymezen (spacing=m), ovšem pro
xterm a další programy, které na obrazovce přepisují jednotlivá písmena,
je nutné písmo, které má nejen pevnou šířku, ale jehož všechny znaky se
vejdou do vymezeného prostoru, tak zvaného cellboxu (spacing=c). Přitom
některá písma v~X (například neskloněná písma Adobe Courier) mají chybně
uvedeno spacing=m, i když ve skutečnosti vyhovují podmínkám pro spacing=c
a je tedy možné je používat i jako fonty pro xterm.

<sect2>Rastrové fonty pro X

<p>
X11R6 jsou standardně dodávány s~několika málo nebo zcela bez ISO-8859-2
fontů. ISO-8859-2 fonty lze získat podle informací na
<url url="http://www.biz.net.pl/english/x-fonts/index.html">
nebo na <url url="ftp://ftp.agh.edu.pl/pub/utils/x11/fonts/pl/">, ve
formátu *.rpm na
<url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/">
nebo
<url url="ftp://sunsite.mff.cuni.cz/MIRRORS/ftp.redhat.com/pub/contrib/i386/">
soubory <url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-75dpi-970301biznet-3.i386.rpm">,
<url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-100dpi-970301biznet-3.i386.rpm"> a
<url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/ISO-8859-2-X11-fonts-basic-970301biznet-3.i386.rpm"> a ve formátu *.deb na
ftp://ftp.debian.org/debian/hamm/hamm/binary-all/x11/xfntil2*.deb.
Neproporcionální fonty z~balíku misc nejsou příliš kvalitní, lepší je možné
získat z~balíku cs-tools z~adresáře <tt>X11/fonts/xfonts</tt>. Tyto fonty
ovšem údajně nejsou free.

<p>
Přestože rozlišení většiny displejů je okolo 75dpi, pokud je dostatek místa
na disku, je vhodné nainstalovat i fonty v~rozlišení 100dpi, zvětší se tím
počet dostupných velikostí jednotlivých písem.

<p>
U mnoha programů lze parametrem <tt>-fn</tt> stanovit, jaký mají
používat font:

<tscreen><code>
xterm -fn '-misc-fixed-medium-r-normal--14-*-iso8859-2'
</code></tscreen>

Znak hvězdička je žolík, který nahrazuje jednu nebo více složek jména.
U většiny programů je možné nastavit používané fonty také pomocí
atributů (resources). To může provést buď správce počítače úpravou
souboru z~adresáře <tt>/usr/X11R6/lib/X11/app-defaults</tt>, nebo
libovolný uživatel tím, že zkopíruje soubor ze zmíněného adresáře do
svého domovského adresáře, a na začátek jména souboru přidá tečku.

<sect2>Vektorové fonty pro X

<p>
<itemize>
<item><url url="ftp://ftp.osb.hu/pub/misc/fonts/local/latin-2/">
<item><url url="http://www.intersoft.cz/linux/fonts/">
</itemize>

<sect1>Klávesnice v~X pomocí XKB<label id="XKB">

<p>
Pro používání české klávesnice v~X Window System <bf>musíte mít nainstalované
a nastavené locales</bf> (viz kapitola <ref id="locale" name="locales">),
takže první z~příkazů

<tscreen><code>
printenv LC_ALL
printenv LC_CTYPE
printenv LANG
</code></tscreen>

který něco vypíše, musí vypsat <tt>cs_CZ</tt>,
<tt>cs_CZ.<it>kódování</it></tt> nebo <tt>czech</tt> (pouze v případě,
že máte české locale pro kategorii LC_CTYPE v~adresáři <tt>cs</tt>, může
být vypsáno <tt>cs</tt>). V~KDE je pro nastavení klávesnice přímo menu,
v~ostatních prostředích je třeba vybrat vhodnou mapu klávesnice příkazem

<tscreen><code>
setxkbmap -symbols 'czsk(us_cz_qwertz)' -compat group_led
</code></tscreen>

<p>
který může být umístěn v~souboru <tt>$HOME/.Xclients</tt> jednotlivých
uživatelů, aby se provedl automaticky při každém spuštění X. Mapa
<tt>us_cz_qwertz</tt> má dva režimy činnosti. V~prvním funguje americké
rozložení klávesnice, ve druhém se chová jako český psací stroj. Přepínání
mezi oběma režimy se provádí klávesou ScrollLock nebo současným
stisknutím obou kláves Shift. Chvilkového přepnutí do opačného režimu
lze dosáhnout držením pravé klávesy Alt. Klávesa <tt>=</tt> funguje jako
mrtvá čárka, se Shiftem jako mrtvý háček, klávesa <tt>`</tt> (vlevo od
klávesy <tt>1</tt>) funguje jako mrtvá přehláska a se Shiftem jako mrtvý
kroužek, tj. pro napsání <tt>ň</tt> musíte stisknout <tt>Shift+=</tt>
a potom <tt>n</tt>. Kromě mapy <tt>us_cz_qwertz</tt> je k~dispozici
ještě mapa <tt>us_cz_qwerty</tt>, která má oproti českému psacímu stroji
přehozené klávesy <tt>z</tt> a <tt>y</tt>, a mapa <tt>us_cz_prog</tt>,
u které horní řada kláves s~číslicemi produkuje písmena s~háčky a čárkami
jako na českém psacím stroji, fungují obě mrtvé klávesy, ale jinak se
klávesnice chová jako americká. Existují i mapy <tt>cz_us_*</tt>, které
mají implicitně zapnutou jednu z~uvedených českých klávesnic a lze je
přepnout na americkou klávesnici. Tyto mapy ovšem působí problémy při
komunikaci s~nelokalizovanými počítači. Ke všem šesti mapám existují i
slovenské varianty, v~jejichž jméně je <tt>cs</tt> nahrazeno <tt>sk</tt>.

<p>
Pro používání výše uvedených map klávesnice musí mít sekce Keyboard
souboru <tt>/etc/X11/XF86Config</tt> tento obsah:

<verb>
  Protocol        "Standard"
  AutoRepeat      500 5
  XkbModel        "pc102"
</verb>

--- nesmí obsahovat řádek <tt>XkbDisable</tt>, a aby bylo možné měnit
mapy klávesnice příkazem <tt>setxkbmap</tt>, musí být použit řádek
<tt>XkbModel</tt> (samozřejmě s~uvedením správného modelu klávesnice).
Přidáním řádků

<verb>
  XkbKeymap       "xfree86(us_cz_qwertz)"
  XkbCompat       "group_led"
</verb>

<p>
je možné zajistit zapnutí zadané mapy klávesnice při každém startu X
bez použití příkazu <tt>setxkbmap</tt>.

<p>
Všechny výše uvedené mapy klávesnice jsou standardní součástí balíku
XFree86 až od verze 3.3.3.1 z~roku 1999, takže pokud máte starší verzi
nebo X jiné produkce, budete muset tyto mapy doinstalovat (nyní jsou
pravděpodobně dostupné pouze jako součást balíku XKB-czsk-forcedIM).
nebo se musíte spokojit s~mapou <tt>cs</tt>, která je součástí X11
již od verze R6.1 Mapa <tt>cs</tt> se zapíná příkazem
<tt>setxkbmap cs -option grp:shift_toggle</tt> nebo řádky

<verb>
  XkbLayout       "cs"
  XkbOptions      "grp:shift_toggle"
</verb>

v~souboru <tt>/etc/X11/XF86Config</tt>. Parametr <tt>grp:shift_toggle</tt>
umožňuje přepnutí na americkou klávesnici současným stiskem obou Shiftů,
což je nezbytné, protože mapa <tt>cs</tt> sama o sobě neumožňuje zadávat
některé speciální znaky, například křížek <tt>#</tt> a zavináč <tt>@</tt>.

<p>
Verzi X je možné zjistit příkazem

<tscreen><verb>
X -showconfig
</verb></tscreen>

<sect2>Možné problémy

<p>
Lokalizace klávesnice v~X byla až donedávna jedním z~nejtvrdších
oříšků při lokalizaci Linuxu. Pokud nepoužíváte nejnovější verzi X11
(a nepoužíváte KDE, v~němž je česká klávesnice už poměrně dlouho funkční),
je téměř jisté, že vám klávesnice fungovat nebude, ale ani v~nejnovější
verzi X11 nebude fungovat v~každém programu. Pokud máte tu smůlu, že
vám klávesnice nefunguje vůbec nikde, použijte následující postup pro
odhalení a odstranění chyb:

<p>
Zkontrolujte, zda máte správně nastavené proměnné prostředí pro locales,
jak je popsáno na začátku této kapitoly, otevřete si textové terminálové
okno a zkuste zapnout klávesnici příkazem

<tscreen><code>
setxkbmap -symbols 'czsk(us_cz_qwertz)' -compat group_led
</code></tscreen>

<p>
Pokud není příkaz <tt>setxkbmap</tt> nalezen (měl by být
v~<tt>/usr/bin/X11/setxkbmap</tt>), pak pravděpodobně máte velmi starou
verzi X a budete muset provést upgrade nebo použít klávesnici popsanou
v~podkapitole <ref id="xmodmap" name="Klávesnice v X pomocí xmodmap">
či se spokojit s~počeštěním klávesnice pouze v~programu xterm popsaným
v~kapitole <ref id="xterm" name="Lokalizace jednotlivých aplikací">.
Jestliže se vypíše <tt>XKB extension not present on :0.0</tt>, znamená
to, že nemáte zapnuté XKB (v~souboru <tt>/etc/X11/XF86Config</tt>
je nevykomentovaný řádek <tt>XkbDisable</tt>). Jestliže se vypíše
<tt>Couldn't interpret _XKB_RULES_NAMES property</tt>, chybí vám
v~sekci <tt>Keyboard</tt> souboru <tt>/etc/X11/XF86Config</tt> řádek
<tt>XkbModel</tt> nebo nemáte nainstalovány české mapy klávesnice.

<p>
Mapy klávesnice jsou součástí balíku
<url url="ftp://ftp.muni.cz/pub/localization/linux/X11/XKB-czsk-forcedIM-0.04.tar.gz">,
který však obsahuje také knihovnu forcedIM, pro "opravu" některých
aplikací nefungujících s~českou klávesnicí. Tato knihovna může s~některými
programy a verzemi X11 způsobovat problémy.
Pokud budete instalovat soubory s~mapami klávesnice z~tohoto balíku ručně,
nezapomeňte, že po přidání souboru do některého z~adresářů
v~<tt>/usr/X11R6/lib/X11/xkb</tt> je nutné aktualizovat příslušný
<tt>.dir</tt> soubor, například takto:

<verb>
cd /usr/X11R6/lib/X11/xkb/keymap
xkbcomp -llphfR '*' -o ../keymap.dir
</verb>

<p>
Pokud se mapu klávesnice podařilo nastavit, nastavte proměnnou prostředí
XKB_DEBUG a v~okně s~terminálovým emulátorem zadejte ručně příkaz

<tscreen><code>
xterm &
</code></tscreen>

<p>
V~původním okně se musí vypsat
<tt>XKEYBOARD (version 1.00/1.00) OK!</tt>. Pokud se vypíše
<tt>XKEYBOARD extension not present</tt> je opět problém
s~<tt>XkbDisable</tt>.

<p>
Pokud se v~původním okně vypíše
<tt>Warning: locale not supported by C library, locale unchanged</tt>,
je to chyba v~nastavení locales --- některou z~výše uvedených proměnných
prostředí máte nastavenu na locale, které na vašem počítači není
nainstalované nebo je nastavena na alias, jemuž v~souboru
<tt>/usr/share/locale/locale.alias</tt> není přiřazeno existující locale
(v~adresáři, který se vypíše příkazem <tt>localedef --help</tt> není
podadresář s~příslušným jménem).

<p>
Jestliže se v~původní okně vypisuje
<tt>Warning: locale not supported by Xlib, locale set to C</tt>
není nastavené locale známé knihovně Xlib. Obvykle to je <tt>cs_CZ</tt>;
konkrétní hodnotu lze zjistit ručním startem programu netscape (vypíše
se něco jako
<tt>netscape-navigator: locale `cs_CZ' not supported by Xlib; trying `C'.</tt>).
Pro inkriminované locale je nutné doplnit nebo upravit v~souboru
<tt>/usr/X11R6/lib/X11/locale/locale.alias</tt> řádek

<verb>
cs_CZ                   cs_CZ.ISO8859-2
</verb>

Tato chyba je opravena až v~XFree86 3.3.3.1. Také je chybně řádek pro
<tt>czech</tt> --- správně má být

<verb>
czech                   cs_CZ.ISO8859-2
</verb>

ale tato chyba se při normální instalaci libc/glibc neprojeví (<tt>czech</tt>
je alias na <tt>cs_CZ.ISO8859-2</tt> a locales jsou umístěné v~adresáři
<tt>cs_CZ</tt>, takže X použijí <tt>cs_CZ</tt>). Řádek pro <tt>czech</tt>
je opraven v~X11R6.4.

<p>
Je-li vše v~pořádku, přepněte se do nově otevřeného okna programu
xterm, zadejte příkaz <tt>vi test</tt>, stiskněte klávesu <tt>i</tt>,
a přepněte na českou klávesnici stisknutím klávesy <tt>Scroll Lock</tt>.
Pokud byla mapa klávesnice nastavena s~<tt>-compat group_led</tt>, měla
by se kontrolka Scroll Lock rozsvěcet a zhasínat nejen při mačkání klávesy
<tt>Scroll Lock</tt>, ale i stisknutím obou kláves Shift, a musí také
blikat v~rytmu mačkání pravé klávesy Alt. Při rozsvícené kontrolce
Scroll Lock můžete zkontrolovat, zda funguje psaní českých znaků.
Měly by se vypisovat háčkované znaky <tt>ěščřž</tt>, čárkované
<tt>ýáíéú</tt> i znaky s~akcenty po použití mrtvých kláves. Fungovat
znamená, že se něco vypisuje. Jestliže se vypisují podivné znaky, bude
problém v~tom, že xterm nepoužívá ISO-8859-2 fonty nebo tyto fonty ani
nemáte nainstalované. Řešení naleznete v~kapitole
<ref name="Fonty v X Window System" id="xfonts">.

<p>
Pokud klávesnice funguje ve vi, ale ne v~příkazovém řádku,
nemáte pravděpodobně zkonfigurovaný shell pro práci s~osmibitovými
znaky. Náprava je popsána v~podkapitolách <ref id="bash" name="bash">
a <ref id="tcsh" name="tcsh">.

<p>
Pokud v~nově otevřeném okně česká klávesnice funguje, ale jinde ne,
zkontrolujte, zda máte potřebné proměnné prostředí nastaveny už před
startem X a zda ostatní okna nepatří jinému terminálovému emulátoru
než programu xterm. Jiné terminálové emulátory nemusí s~českou
klávesnicí pracovat.

<p>
Nefungují klávesy 'ěščřž', ale 'ýáíéú' fungují: nemáte nastavenou
proměnnou prostředí <tt>LC_ALL</tt> nebo <tt>LC_CTYPE</tt>, případně
<tt>LANG</tt> na <tt>czech</tt> nebo <tt>cs_CZ</tt> (než jste dočetli
sem, byli jste několikrát nabádáni k~jejich nastavení).

<p>
Nefungují klávesy 'ýáíéú', tyto znaky však lze napsat pomocí
mrtvé klávesy čárka a 'yaieu': toto je dlouho známá chyba, která
je odstraněna až v XFree86 3.3.3.1. Naštěstí ve starších verzích X
je možné ji obejít úpravou textových souborů popsanou v~podkapitole
<ref id="aeiuy" name="Nefungující áéíúý">.

<p>
Kroužkované 'ů' se na programátorské klávesnici píše stisknutím mrtvé
klávesy Shift+obrácený apostrof následovaným stiskem klávesy u.
Pokud jste zvyklí psát kroužkované 'ů' jako mrtvý háček a 'u', přidejte
do souboru <tt>/usr/X11R6/lib/X11/locale/iso8859-2/Compose</tt> řádky

<tscreen><verb>
&lt;dead_caron&gt; &lt;U&gt;                        : "\331"        Uring
&lt;dead_caron&gt; &lt;u&gt;                        : "\371"        uring
</verb></tscreen>

(velké mezery jsou vytvořeny tabelátory).

<p>
V~tomto okamžiku by vám česká klávesnice v~X měla v~zásadě chodit.
Bohužel stále existuje mnoho programů pod X, které s~českou klávesnicí
nepracují. Je to chyba aplikace. Řešením je chybné aplikaci opravit
nebo někoho znalejšího slušně požádat o pomoc s~opravou. Než bude
aplikace korektně opravena, můžete se pokusit o dočasnou nápravu
popsanou v~podkapitole <ref name="Problém mrtvých kláves a XKB" id="mrtve">.
Pokud aplikace načítá české znaky, ale nepracuje s~mrtvými klávesami,
je též možné používat klávesnici <tt>cz-komp-qwerty</tt> nebo
<tt>cz-komp-qwertz</tt>, kde se akcentované znaky píšou se stisknutým
pravým Alt (například 'ó' se dostane jako AltGr-o, 'Ř' se dostane
kombinací Alt-Shift-R).

<sect2>Nefungující áéíúý<label id="aeiuy">

<p>
Tato chyba se projevuje tím, že není možné vkládat z~klávesnice ne-ASCII
znaky, které patří zároveň do ISO-8859-1 i do právě používané znakové
sady (pro češtinu sada ISO-8859-2 a znaky áéíúý), bez použití mrtvých
kláves. Vkládání pomocí mrtvé klávesy čárka následované aeiuy přitom
funguje. Chyba se projevuje ve všech aplikacích v~X, a je opravena až
v~XFree86 3.3.3.1.

Ve starších verzích je možné tuto chybu několika způsoby obejít.
Pravděpodobně žádný z~nich není zcela korektní, ale chybu odstraňují.

Asi nejlepší je do souboru
<tt>/usr/X11R6/lib/X11/locale/iso8859-2/Compose</tt>
přidat následující řádky:

<tscreen><code>
<yacute>                               : "\375"        yacute
<aacute>                               : "\341"        aacute
<iacute>                               : "\355"        iacute
<eacute>                               : "\351"        eacute
<uacute>                               : "\372"        uacute
</code></tscreen>

Druhou možností je opravit řádek

<verb>
        ct_encoding     ISO8859-2:GR
</verb>

téměř na konci souboru
<tt>/usr/X11R6/lib/X11/locale/iso8859-2/XLC_LOCALE</tt> na

<verb>
        ct_encoding     ISO8859-2:GR; ISO8859-1:GR
</verb>

<p>
První metoda opravy je pravděpodobně o něco lepší, protože u druhé při
uvedení názvu symbolu patřícího do ISO-8859-1 a ne do ISO-8859-2
v~definici klávesnice bude při stisknutí příslušné klávesy načten znak
s~příslušným kódem, přestože se v~sadě ISO-8859-2 nevyskytuje.

Starší opravy této chyby používaly v~mapách klávesnice pro dotčené znaky
symboly <tt>il2_*</tt> definované v~souboru <tt>Compose</tt>
(<tt>il2_aacute</tt> místo <tt>aacute</tt>) nebo přímo číselné kódy
těchto znaků.

<sect2>Problém mrtvých kláves a XKB<label id="mrtve">

<p>
Další problémy s~českou a slovenskou klávesnicí vznikají tím, že
se pro psaní některých znaků s~akcenty používají mrtvé klávesy (klávesy
odpovídající samostatné čárce a háčku na psacím stroji, které vypíšou
akcent bez posuvu válce, takže další napsaný znak bude na téže pozici).
Na počítači je potřeba při stisknutí mrtvé klávesy pozdržet zpracování
znaku až do stisknutí další klávesy, a pak například místo krátkého
'a' vrátit dlouhé 'á'. Bohužel podpora mrtvých kláves byla až do verze
X11R6 záležitostí X-serveru, a některé X-servery mrtvé klávesy vůbec
nepodporovaly.
Standardní podpora mrtvých kláves se objevila až ve verzi X11R6.1 spolu
s~novým mechanismem pro práci s~národními klávesnicemi zvaným X Keyboard
Extension (XKB) používajícím tak zvané vstupní metody (input methods).
Tyto vstupní metody musí jednotlivé aplikace inicializovat a používat,
takže starší aplikace s~XKB nefungují.
XFree86 --- free implementace X11 používaná ve většině distribucí Linuxu
podporuje mrtvé klávesy pomocí XKB od verze 3.3, do té doby bylo možné
používat mrtvé klávesy pouze pomocí xmodmap.

<p>
V~současnosti je stále mnoho starších aplikací, které s~XKB nefungují.
Koncepčním řešením je tyto aplikace upravit, aby používaly vstupní
metody. Než k~tomu dojde, je nutné se v~neupravených programech vzdát
používání národních klávesnic nebo používat různé špinavé triky, které
jejich používání umožní.

<p>
Nejrozšířenějším z~těchto triků je patch Stano Meduny na knihovnu libX11,
známý pod názvem forcedIM. Tento patch zajistí, že pokud aplikace správně
neinicializuje vstupní metody, provede jejich inicializaci přímo zmíněná
knihovna. Používání patchované knihovny má však několik nevýhod:

<itemize>
<item>Pokud se objeví aktualizovaná verze knihovny libX11 například
s~opravenými bezpečnostními dírami, je třeba --- dokud nebude k~dispozici
aktualizovaná verze knihovny s~forcedIM patchem --- se buď vzdát mrtvých
kláves v~neupravených aplikacích nebo používat starou verzi patchované
knihovny s~bezpečnostními dírami.
<item>Pokud se při aktualizaci změní některé vnitřní datové struktury
X11, nebude možné starou knihovnu forcedIM s~novou verzí X11 vůbec
používat.
<item>Na některé aplikace je krátký i tento patch.
</itemize>

Některé z~nevýhod forcedIM odstraňuje balík
<url url="http://www.fi.muni.cz/~kabi/linux/LibI18Nforce.tar.gz">, který
obsahuje upravené verze pouze několika málo funkcí z~libX11 a navíc je
možné jej používat selektivně pouze pro aplikace, které s~národní
klávesnicí nepracují. Takové aplikace se startují následující dávkou:

<tscreen><code>
#!/bin/sh
LD_PRELOAD=LibI18N/lib/libI18Nforce.so.0.0
export LD_PRELOAD
chybna_aplikace $*
</code></tscreen>

<p>
(před <tt>libI18Nforce.so.0.0</tt> a <tt>chybna_aplikace</tt> je třeba
doplnit správné cesty, pro libc5 je třeba použít
<tt>libI18Nforce-c5.so.0.0</tt>). Instalace balíku spočívá v~rozbalení
archivu a vytvoření startovacích skriptů pro všechny X11 programy,
které nefungují s~mrtvými klávesami (a které s~knihovnou libI18Nforce
fungují). Balík neobsahuje mapy klávesnice.

<p>
Původní balík forcedIM od Stano Meduny lze získat na
<url url="ftp://ftp.fi.muni.cz/pub/localization/linux/X11/XKB-czsk-forcedIM-0.04.tar.gz">.
Tento balík ovlivňuje všechny X11 aplikace (některé bohužel negativně).
Zahrnuje v~sobě starší balíky <tt>XKB-cz-X11R6.3.tar.gz</tt> s~mapami
klávesnic <tt>us_cz_qwertz</tt> atd., <tt>xlib-forcedIM-0.01.tar.gz</tt>
(který obsahuje i přeloženou patchovanou knihovnu
z~<url url="ftp://ftp.levonet.sk/pub/linux/localization/libX11.so.6.99">),
cs_CZ locale (už obsažené v~glibc 2.0.7, ale chybějící v~glibc 2.0.5),
sk_SK locale a patch na soubor <tt>XLC_LOCALE</tt>.
Balík by měl fungovat na všech distribucích Linuxu používajících XFree86
s~XKB rozšířením (lze zjistit podle existence adresáře
<tt>/usr/X11R6/lib/X11/xkb</tt>).
RPM tohoto balíku je na <url url="ftp://rak.isternet.sk/pub/linux/localization/mirrors/salstar.award.sk/RPMS/XKB-czsk-forcedIM-0.04-2.i386.rpm">.

<p>
Rozbalený balík se nainstaluje spuštěním skriptu <tt>install.sh</tt>.
Skript je nutné spustit jako root z~konzole (ne z~X). Pokud váš
počítač startuje přímo do X (runlevel 5), je vhodné změnit pro instalaci
implicitní runlevel v~řádku <tt>id:5:initdefault:</tt> v~souboru
<tt>/etc/inittab</tt> na 3, a hodnotu 5 vrátit až po ověření, že X
skutečně fungují. Popis, jak přepínat jednotlivé mapy klávesnice, je
uveden na začátku kapitoly <ref name="Klávesnice v X pomocí XKB" id="XKB">.
Pro zajištění funkčnosti aplikací, které neinicializují vstupní metody,
je třeba nastavit proměnnou <tt>XLIB_FORCE_I18N</tt> na hodnotu 2
nebo 1.

<p>
V~případě problémů s~konkrétní aplikací při používání knihovny
forcedIM nastavte před spuštěním problémové aplikace proměnnou
prostředí <tt>XLIB_FORCE_I18N_DEBUG</tt> na hodnotu 2 a pošlete výstup
s~popisem, po které akci následovaly konkrétní řádky výpisu, na adresu
<tt>stano@trillian.eunet.sk</tt>.

<sect1>Klávesnice v~X pomocí xmodmap<label id="xmodmap">

<p>
Tato klávesnice je použitelná i na X-serverech, které nepodporují XKB.
Aby fungovaly mrtvé klávesy, je nutná jejich podpora na X-serveru.

<sect2>Řešení z~cs-tools

<p>
Jedná se o zastaralé řešení, které je zde uvedeno pouze pro úplnost.
Neobtěžujte prosím jeho autora ani s~žádostmi o pomoc nebo radu.

<p>
Řešení je obsaženo v~balíku
<url url="ftp://ftp.muni.cz/pub/localization/linux/obsolete/cs-tools/cs-tools-0.19.tar.gz" name="cs-tools">,
v~adresáři <tt>X11/Xlib-Compose-1.1</tt>. Každá klávesnicová mapa
obsahuje dvě klávesnice; na druhou klávesnici je možné přepnout držením
AltGr (pravá klávesa Alt) nebo přeřazovačem ScrollLock.

<sect2>Řešení od Zdeňka Kabeláče

<p><sf>Zdeněk Kabeláč <url url="mailto:kabi@fi.muni.cz"
name="kabi@fi.muni.cz">; 16.~9.~1998</sf>

<p>
Jedná se o pokračování modifikace varianty s~pomocí Xmodmap
(Viz např <url url="http://www.fi.muni.cz/&tilde;kabi/linux/linux.html">);
původní Xmodmap se nahradí novější variantou
<url url="http://www.fi.muni.cz/&tilde;kabi/Xmodmap">,
čímž je v~provozu přepínání mezi 3 klávesnicemi (zatím nevím
jak to inteligentně hlásit --- svítící scroll-lock při variantě B i C
není příliš srozumitelný):

<p>
Varianta A --- čistá US klávesnice
Scroll-lock  přepíná klávesnici --- Win95 klávesa také.
(Pro zájemce přepínání Ctrl+Shift :-))

<p>
Varianta B --- moje "klasická" česká --- tj. česky pouze 2, 3, ..., 0
jinak standard (tj. včetně +/=), vše ostatní přes mrtvé klávesy -
využívá jednak standardní mrtvoly rozmístěné na F9-F12 (nejsou všechny)
a využívá dead_iota na PrintScrn ve spojení s~hack-em Compose
- nedávno publikovaném na
<url url="http://www.fi.muni.cz/&tilde;pekon/Compose">.

<p>
Varianta C --- hnusný škaredý ošklivý hack --- nicméně funguje
- měl by umožnit vkládat české znaky tam, kde je to nezbytně
nutné a program to prostě jinou cestou nepodporuje --- např. staré
verze netscape aj.
(lze na to použít i LD_PRELOAD s~několika hacknutými patchnutými
funkcemi, ale tato varianta je přece jen jednodušší).
Protože v~této variantě nelze používat mrtvé klávesy, musel
jsem naskládat standardně česky používané klávesy na
F-keys --- velká písmena se píší se shiftem --- tj. klávesnice
nepíše !@#$%^&*()_ a F1-F20 --- pokud jsou potřeba tyto znaky
je potřeba se přepnout, napsat je, a přepnout se zpět.

<p>
Samozřejmě nelze očekávat, že program sám od sebe neschopný
pracovat s~ISO-8859-2, začne tyto symboly korektně implementovat.
Jde o hack, který prostě vrací místo dcaron -> idiaeresis,
což je symbol ležící na stejné pozici, ale v~sadě ISO-8859-1.
Aby tedy bylo vidět správný výstup je potřeba špatně
napsanému programu vnutit font --- což se nemusí vždy podařit -
pak tedy sice budete psát správně, jenže uvidíte špatně :-)

<p>
Všem se tu omlouvám, že jsem tu publikoval tento hack --- jsem
proti němu, ale je to tak jednoduché a primitivní, že by bylo
škoda se o této možnosti nezmínit.

<p>
Pokud chce někdo nějaké standardní rozmístění psacího stroje,
nechť si upraví Xmodmap, a pokud si myslí, že to udělal fakt sqěle,
ať mi jej mailne.

<sect>Locales aneb lokalizace knihovny libc<label id="locale">

<p><sf>Vladimír Michl <url url="mailto:michlv@risc.upol.cz"
name="michlv@risc.upol.cz">, Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
5.~1.~1999</sf>

<p>
Termínem "locale" nebo "locales" se rozumí lokalizace funkcí
poskytovaných knihovnou libc nebo glibc. Vzhledem k~tomu, že služby
této knihovny používá většina programů, ovlivní se tím chování téměř
celého systému.

<sect1>Účel locales a jejich kategorie

<p>
Locales umožňují, aby se jednotlivé programy chovaly podle národních
zvyklostí: aby správně fungovalo rozlišování znaků na písmena, číslice
a ostatní znaky, písmen na velká a malá, převody mezi malými a velkými
písmeny (to jsou spíše záležitosti znakové sady než národních zvyklostí,
ale i to je zahrnuto v~locales), řazení (třídění) znaků a řetězců, aby
programy používaly v~dané zemi a jazyce obvyklý způsob zápisu peněžních
údajů, výpisů čísel, data a času, názvů měsíců a dnů v~týdnu. Locales
úzce souvisí s~katalogy zpráv, které umožňují, aby programy vypisovaly
svá hlášení ve zvoleném jazyce. Vše je přitom možné měnit, aniž by bylo
nutné programy rekompilovat!

<p>
Lokalizaci libc je možné nastavit buď kompletní, nebo pouze pro vybrané
kategorie. Kategorie locales jsou uvedeny v~tabulce.

<table><tabular ca="ll">Kategorie | Význam @
<tt>LC_COLLATE</tt>  | Popisuje všechny znaky abecedy a určuje jejich pořadí při lexikografickém třídění. @
<tt>LC_CTYPE</tt>    | Používána pro dělení znaků do tříd jako: malá, velká písmena, oddělovače, apod.. @
<tt>LC_MESSAGES</tt> | Používána pro zprávy zobrazované programy, tzv. katalogy zpráv. @
<tt>LC_MONETARY</tt> | Definuje formátování výpisů peněžních informací. @
<tt>LC_NUMERIC</tt>  | Definuje formátování výpisů čísel. @
<tt>LC_TIME</tt>     | Formát výpisu času a data, názvy a zkratky měsíců a dnů v~týdnu. @
</tabular>
<caption>
Kategorie locales.
</caption>
</table>

<p>
Kategorie <tt>LC_COLLATE</tt> ovlivňuje chování funkcí <tt/strcoll()/
a <tt/strxfrm()/ pro porovnávání řetězců.

<p>
Kategorie <tt>LC_CTYPE</tt> ovlivňuje chování funkcí deklarovaných
v~souboru <tt>ctype.h</tt> jako jsou <tt/isupper()/, <tt/toupper()/,
... a funkcí pro práci s~vícebajtovými znaky jako jsou <tt/mblen()/,
<tt/wctomb()/.

<p>
Kategorie <tt>LC_MONETARY</tt> a <tt>LC_NUMERIC</tt> ovlivňují chování
funkce <tt/localeconv()/, na některých systémech bohužel i funkce ze
skupiny <tt/printf()/.

<p>
Kategorie <tt>LC_TIME</tt> ovlivňuje chování funkce <tt/strftime()/.

<sect1>Způsob nastavování locales

<p>
Převážná většina programů volá funkci <tt>setlocale(LC_ALL, "")</tt>,
která inicializuje locales podle hodnot proměnných prostředí,
jejichž názvy jsou stejné jako kategorie locales, a podle proměnných
<tt>LC_ALL</tt> a <tt>LANG</tt>.

<p>
V~knihovně libc/glibc je vestavěn mechanismus, díky kterému se
vyhodnocování, jaká lokalizace se má použít pro určitou kategorii,
provádí následovně: Je-li nastavena proměnná <tt>LC_ALL</tt>, použije se
její hodnota. Pokud nastavena není, pak se zkoumá nastavení proměnných
<tt>LC_kategorie</tt>. Pokud není nastavena ani proměnná pro příslušnou
kategorii, rozhoduje nastavení proměnné <tt>LANG</tt>. Není-li nastavena
ani proměnná <tt>LANG</tt>, použije se implicitní hodnota "C". Některé
programy (například man 1.x) nastavení proměnných <tt>LC_*</tt> ignorují
a řídí se pouze podle proměnné <tt>LANG</tt>.

<p>
Zmíněné proměnné se nastavují na hodnoty tvaru:

<verb>
jazyk[_ZEMĚ[.kódování]]
</verb>

<p>
nebo lépe na některou z~přezdívek definovaných v~souboru
<tt>locale.alias</tt> --- to je <tt>czech</tt> pro češtinu,
<tt>slovak</tt> pro slovenštinu. Díky přezdívce se hodnota převede na
<tt>cs_CZ.ISO-8859-2</tt> nebo <tt>sk_SK.ISO-8859-2</tt>, což udává jak
kódování, tak jazyk a zemi. Locale soubory se díky mechanismu zabudovanému
do knihovny libc hledají postupně v~adresářích <tt>cs_CZ.ISO-8859-2</tt>,
<tt>cs_CZ.iso88592</tt>, <tt>cs_CZ</tt>, <tt>cs.ISO-8859-2</tt>,
<tt>cs.iso88592</tt> a nakonec v~<tt>cs</tt>.

<p>
Zkratky jazyků stanovuje norma ISO 639, zkratky zemí norma
ISO 3166 (viz kapitola <ref id="zeme_jazyky" name="příloha">).
Kód češtiny je <tt>cs</tt>, slovenštiny <tt>sk</tt>, kód České
republiky <tt>CZ</tt>, Slovenska <tt>SK</tt>. Země se uvádí
z~toho důvodu, že některými jazyky se mluví ve více zemích,
ve kterých se například používá jiné měna.

<p>
Poněkud matoucí je fakt, že kód češtiny se liší od kódu České
republiky. Ale i mezi jazyky, které se používají v~jediné zemi
to není ojedinělý případ: podobně je to u da_DK (dánština, Dánsko),
ja_JP (japonština, Japonsko). V~případě cs_CZ je však o důvod
ke zmatení více, protože kód češtiny je shodný s~ISO kódem
bývalého Československa.

<p>
Přípona <tt>.kódování</tt> by měla sloužit k~výběru správných
locale informací na počítačích, které pro určitý jazyk podporují
několik kódování (v~Evropských podmínkách asi pouze ISO-8858-x a
Unicode), nebo naopak určité kódování nepodporují (například
ISO-8859-2). Bohužel v~různých systémech se pro kódování používají
různé řetězce, takže je možné se setkat se zápisy <tt>ISO-8859-2</tt>,
<tt>ISO_8859-2</tt>, <tt>ISO8859-2</tt>, <tt>iso88592</tt>, za kterými
ještě někdy bývá dvojtečka a rok přijetí standardu kódování ISO-8859-2.
Pokud nemusíte, je lepší příponu <tt>.kódování</tt> vůbec nepoužívat.

<sect1>Které kategorie locales používat

<p>
Přestože v~mnoha návodech je lakonické sdělení "nastavte proměnnou
<tt>LANG</tt> na <tt>cs_CZ</tt>" (nebo <tt>cs</tt>, někde dokonce ještě
chybně <tt>cz</tt>), je užitečné se zamyslet, jestli skutečně chcete
nastavovat všechny kategorie. Nemusí se vám například líbit lokalizovaný
výpis příkazu <tt>ls -l</tt>, v~němž mohou být rozhozeny sloupce kvůli
různé délce zkratek názvů měsíců, některé programy nebo skripty mohou
dokonce při nastavení <tt>LC_ALL</tt> nebo <tt>LANG</tt> špatně fungovat
(zejména když na některých systémech nastavení locales ovlivňuje i takové
funkce jako je <tt/printf()/).

<p>
Navíc autoři programů ne vždy dobře rozlišují (pokud už vůbec
používají locales), kdy program produkuje výpisy pro uživatele a kdy
výpisy pro další zpracování nějakým programem (například zápis do
konfiguračního souboru). Ve druhém případě by se lokalizované funkce
neměly používat. Bohužel u mnoha programů to lze těžko odlišit (typickým
příkladem jsou řádkové příkazy jako příkaz <tt>ls -l</tt>, který může
být jak vyvolán uživatelem, tak použit v~jiném programu nebo skriptu).

<p><label id="skripty">
Při psaní skriptů by mělo být vždy zajištěno, že skripty budou fungovat
i při rozličně nastavené lokalizaci. Pokud se ve skriptech očekává,
že výstupy programů budou v~nelokalizované formě, musí být na začátku
skriptu uvedeny příkazy

<tscreen><code>
LC_ALL=C; export LC_ALL
LANG=C; export LANG
</code></tscreen>

<p>
Nastavení proměnné <tt>LC_ALL</tt> by mělo být postačující; proměnná
<tt>LANG</tt> se nastavuje, aby správně fungovaly i programy, které
nesprávně používají pouze tuto proměnnou.

<p>
<bf>Pro práci se znakovou sadou ISO-8859-2 je velice vhodné mít nastavené
přinejmenším <tt>LC_CTYPE</tt></bf>. Bez něj nebudou fungovat některé
klávesnice v~X, v~textových editorech nebudou správně rozeznávány hranice
slov (takže například slovo užovka nepůjde v~editoru vi smazat příkazem
<tt>dw</tt>, ale bude nutné použít 3dw, jako by se jednalo o tři slova).

<sect1>Softwarové požadavky

<p>
Knihovna glibc (alias libc6 nebo libc2) funguje s~locales vcelku bez
problémů (od verze 2.0.7 obsahuje i české locales). To se však nedá říci
o knihovně libc5. Ve v~Linuxu poměrně rozšířené verzi libc-5.3.12 jsou
právě v~oblasti locales chyby, které při nevhodných hodnotách v~sekci
LC_TIME způsobí pád programu localedef.  Obvykle se doporučuje libc
verze alespoň 5.4.17.

<p>
Na systémech, které mají libc i glibc je nutné u již přeložených
programů zjistit, s~jakou variantou knihovny libc pracují. Bohužel
například v~systému Red Hat 5.x příkaz <tt>ldd `which program`</tt>
zcela bezostyšně lže.

<p>
Dále je třeba mít odpovídající utility `localedef' a `locale', a pokud
chcete překládat katalogy zpráv, tak také utility `gencat' a `msgfmt'.

<sect1>Instalace

<p>
Nejdříve zjistěte v~jakém stavu má váš systém locales: Příkazem

<tscreen><code>
localedef --help
</code></tscreen>

<p>
zjistíte (podle řádku s~textem <tt>System's directory for character
maps:</tt>), v~jakém adresáři jsou očekávány mapy znaků. U systémů
s~libc5 to bývá <tt>/usr/share/nls/charmap</tt>, u systémů s~glibc
<tt>/usr/share/i18n/charmaps</tt>. Další popis je psán pro systémy
s~libc5, protože uživatelé glibc systémů pravděpodobně už budou mít
locales nainstalované. Pokud ne, musí si v~následujícím popisu
upravit cesty v~příkazech podle vlastního systému. Pozor na 's',
které ve jménech adresářů locale(s) a charmap(s) někde je a někde
není!

<p>
Pokud v~tomto adresáři chybí soubor s~popisem znakové sady ISO-8859-2
(zkuste žolíkový zápis ISO*8859-2*), budete si muset stáhnout soubor
<url url="http://www.inf.upol.cz/~michlv/ftp/WG15-collection.tar.gz">
rozbalit jej do libovolného adresáře a z~rozbaleného adresáře
<tt>WG15-collection</tt> zkopírovat adresáře <tt>charmaps</tt> a
<tt>locales</tt> včetně obsahu do adresáře, ve kterém se očekává
adresář s~mapami znaků:

<tscreen><code>
cp -r WG15-collection/charmaps /usr/share/nls/charmap
cp -r WG15-collection/locales /usr/share/nls/locale
</code></tscreen>

<p>
Pokud už na vašem systému zmíněné soubory jsou, bude stačit nainstalovat
pouze české nebo slovenské locales. Alespoň české by už měly být v~glibc
2.0.7; a pokud jste instalovali českou klávesnici do X11 z~balíku
<tt>XKB-czsk-forcedIM*</tt>, máte české a slovenské locales už také
nainstalované. O tom je možné se přesvědčit příkazem

<tscreen><code>
locale -a | grep ^cs
</code></tscreen>

<p>
Vždy je však vhodné stáhnout zdrojový soubor s~českými locales
<url url="ftp://ftp.fi.muni.cz/pub/localization/locale/cs_CZ">
a umístit jej do adresáře <tt>/usr/share/nls/locale</tt>. V~mnoha
balících je totiž stará verze tohoto souboru, ve které mimo jiné
nemusí fungovat správně třídění.

<p>
Zdrojový soubor s~českými locales je nutné přeložit
do binární podoby pro libc příkazy

<tscreen><code>
cd /usr/share/locale
mkdir -p cs_CZ/LC_MESSAGES
localedef -c -i /usr/share/nls/locale/cs_CZ \
  -f /usr/share/nls/charmap/ISO*8859-2* ./cs_CZ
</code></tscreen>

<p>
pro glibc příkazy

<tscreen><code>
mkdir -p /usr/share/locale/cs_CZ/LC_MESSAGES
localedef -c -i /usr/share/i18n/locales/cs_CZ \
  -f /usr/share/i18n/charmaps/ISO-8859-2 /usr/share/locale/cs_CZ
</code></tscreen>

<p>
Výsledkem bude adresář <tt>/usr/share/locale/cs_CZ</tt> obsahující sadu
souborů se jmény <tt>LC_*</tt> a adresář <tt>LC_MESSAGES</tt>.

<p><label id="zkratkymesicu">
Výše uvedené příkazy můžete také použít, pokud se vám nelíbí, že
v~dodávaných českých locales jsou na místě zkratek jmen měsíců použity
plné názvy, což způsobuje rozházení výpisu produkovaného příkazem <tt>ls
-l</tt>. Stačí opravit názvy uvedené v~sekci <tt>abmon</tt> ve zdrojovém
souboru <tt>/usr/share/i18n/locales/cs_CZ</tt> a locales znovu přeložit.

<p>
Pak už můžete nastavovat proměnné <tt>LC_CTYPE</tt>, <tt>LC_COLLATE</tt>
nebo <tt>LC_ALL</tt> a <tt>LANG</tt> a kochat se, jak to funguje.

<p>
Například aby správně fungovala klasifikace znaků, je třeba nastavit
proměnnou prostředí <tt>LC_CTYPE</tt>. V~shellech bash a ksh se to
provede příkazem

<tscreen><code>
export LC_CTYPE=cs_CZ
</code></tscreen>

<p>
v~csh a tcsh příkazem

<tscreen><code>
setenv LC_CTYPE cs_CZ
</code></tscreen>

<p>
a ve starších shellech vycházejících z~Bourne shellu, sh, a jsh příkazem

<tscreen><code>
LC_CTYPE=cs_CZ
export LC_CTYPE
</code></tscreen>

<p>
Pro nastavení všech kategorií locales je třeba nastavit proměnnou
prostředí <tt>LANG</tt> nebo <tt>LC_ALL</tt>.

<p>
Pokud chcete, aby česky byly pouze zprávy vypisované programy,
nastavte proměnnou <tt>LC_MESSAGES</tt>:

<tscreen><code>
export LC_MESSAGES=cs_CZ
</code></tscreen>

<sect1>Jak to funguje

<p>
Při nastavení některé z~proměnných prostředí ovládajících locales
se najde v~souboru <tt>/usr/share/locale/locale.alias</tt> odpovídající
hodnota, podle které se vybere adresář z~<tt>/usr/share/locale</tt>
(nebo se tento adresář vybere přímo). V~adresáři odpovídajícím vybranému
jazyku jsou binární soubory vygenerované příkazem <tt>localedef</tt>
z~textových locales. Jména souborů jsou následující:

<verb>
LC_COLLATE, LC_MESSAGES, LC_NUMERIC, LC_CTYPE, LC_MONETARY, LC_TIME.
</verb>

<p>
Pokud některý soubor smažete a vytvoříte místo něj adresář se stejným
jménem, pak se po novém vygenerování souborů utilitou `localedef'
soubor umístí do tohoto adresáře se jménem začínajícím předponou SYS_.

<p>
Tohoto se nejčastěji využívá u <tt>LC_MESSAGES</tt>, kdy jsou do tohoto
adresáře umísťovány katalogy zpráv pro různé programy. Katalog zpráv je
soubor, v~němž jsou umístěny všechny zprávy vypisované programem nebo
skupinou programů a jehož záměnou lze docílit změny jazyka, kterým
program komunikuje.

<p>
V~případě katalogů zpráv lze předepsat, kde se tyto katalogy mají hledat,
pomocí proměnné prostředí
<tt>NLSPATH</tt>.
<verb>
Např:
        export NLSPATH=/usr/share/locale/%L/LC_MESSAGES/%N.cat

kde %N znamená jméno katalogu.
    %L znamená jméno lokalizace (kategorie LC_MESSAGES).
</verb>

<p>
Za oba tyto atributy si program dosadí správné hodnoty, když potřebuje
informace o zvyklostech země.

<p>
Pokud je třeba v~<tt>NLSPATH</tt> zadat více adresářů, oddělují se
dvojtečkou.

<sect1>Katalogy zpráv aneb programy komunikující česky

<p>
Jedním z~cílů lokalizace je umožnit, aby si uživatel mohl vybrat,
v~jakém jazyce budou jednotlivé programy vypisovat svá hlášení, menu,
apod., a to bez rekompilace programů. Aby to bylo možné, musí být
texty všech zpráv, které program produkuje, z~něj vytaženy a umístěny
v~nějakém externím souboru (katalogu zpráv). Jeho záměnou za jiný se
dosáhne změny všech zpráv. V~současné době se používají dva způsoby jak
to provést:

<itemize>
<item>a) Použití katalogových služeb libc.
<item>b) Použití GNU gettextu (tyto služby budou integrovány v~knihovně
glibc-2 neboli libc-6)
</itemize>

<p>
ad a) Starší a také při programování pracnější řešení.
Paralelně s~programem je třeba vytvářet textový katalog zpráv, ze
kterého se nakonec pomocí `gencat' vytvoří katalog v~binárním tvary
(který mívá příponu .cat). Pro přístup do katalogu se v~programu
používají funkce catopen, catclose, catgets (popis viz man).

<p>
ad b) Novější řešení, jednodušší pro tvorbu a údržbu programů.
Pro jeho použití je nutný balík gettext. V~programu se pak každá zpráva,
kterou vypisuje, napíše jako argument funkce gettext. Po změně programu
pak stačí vygenerovat seznam všech zpráv, které jsou v~programu,
a tyto zprávy přeložit. Nový katalog lze také spojit se starým, již
přeloženým. Zdrojový tvar katalogu se pro použití programem převádí do
binárního tvaru tzv. objektu zpráv (soubor mívá příponu .mo nebo .gmo)
utilitou `msgfmt'.

<p>
Při obou postupech se výsledný katalog zpráv umístí do adresáře
<tt>/usr/share/locale/cs_CZ.*/LC_MESSAGES</tt>.

<sect2>Počešťování

<p>
Nejprve je třeba zjistit, zda je aplikace napsaná internacionálně.
To lze několika způsoby:

<itemize>
<item>pomocí příkazu strace zjistíme, zda se aplikace snaží někde hledat
katalog zpráv. Před spuštěním však musíme mít nastavenu proměnnou
prostředí <tt>LANG</tt> nebo <tt>LC_ALL</tt> na příslušný jazyk ---
např: <tt>export LC_ALL=cs_CZ</tt>.
<item>podíváme se do zdrojáků a hledáme katalogy zpráv. Mívají přípony
.msg, .m, .cat, .pot, .po .
</itemize>

<p>
Pokud aplikace internacionálně napsaná není, pak máme smůlu, nebo ji
můžeme upravit.

<p>
Je-li internacionálně napsaná, je třeba zjistit, který ze dvou výše
popsaných, pak může používat jeden ze dvou mně známých
způsobů a to:

<enum>
<item>funkce knihovny libc (catopen, catclose, catgets)
<item>GNU gettext (integrován do GNU libc 2.xx (libc-6))
</enum>

<sect2>Funkce knihovny libc

<p>
Tento způsob je starší a pravděpodobně přenositelnější na jiné operační
systémy. Všechny zprávy z~programu jsou vytaženy do katalogu (mívá příponu
.msg, .m), který může být rozdělen na několik částí. Katalog vypadá
následovně:

<verb>
$set cislo #Nazev
$ #Jmeno_zpravy1 dále poznámky, třeba originální zpráva
# Vlastní zpráva 1
$ #Jmeno_zpravy2 dále poznámky, třeba originální zpráva
# Vlastní zpráva 2
...
</verb>

<p>
Řádky které začínají znakem '&dollar', nejsou umístěny do výsledného
katalogu. '&dollar;set cislo #Nazev' je příkaz, který udává číslo
množiny a její symbolický název. Tímto musí začínat každý katalog.
Dále pokračujeme vždy po dvou řádcích, přitom první řádek je nepovinný,
pouze definuje symbolické jméno zprávy.

<p>
&dollar #Jmeno_zpravy1 dále poznámky, třeba originální zpráva
# Vlastní zpráva 1

<p>
Takže pokud máme napsán katalog, můžeme jej zkompilovat příkazem gencat,
jehož syntaxe je:

<verb>
gencat [-new] [-or] [-lang C|C++|ANSIC] catfile msgfile [-h &lt;header-file&gt;]...
        -new generuje nový katalog
        -lang pro jaký jazyk má být vytvořen hlavičkový soubor
        catfile jak se má jmenovat katalog
        msgfile soubor zpráv
        -h hlavičkový_soubor generovat hlavičkový soubor tohoto jména
</verb>

<p>
Po kompilaci již máme výsledný katalog, který pak stačí umístit do
adresáře s~ostatními katalogy.

<p>
!!!POZOR!!! Pokud překládáme katalog z~jiného jazyka, je třeba zachovat
pořadí i počet zpráv.

<p>
Příklad:

<p>
Uděláme malý příklad použití tohoto způsobu:

<enum>
<item>Napíšeme program test.c
<verb>
#include &lt;locale.h&gt;
#include &lt;stdio.h&gt;
#include &lt;features.h&gt;
#include &lt;nl_types.h&gt;

#include "test-cat.h"

char main() {
        nl_catd cfd;

        setlocale(LC_MESSAGES, "");
        cfd = catopen("test", MCLoadBySet);

        printf("%s\n", catgets(cfd, TestlistSet, TestlistWelcome, "Welcome in test program"));
/* "Welcome in test program" se vypíše v~případě, že zpráva není v~katalogu nalezena,
   nebo katalog nebyl nalezen */
        printf("%s\n", catgets(cfd, TestlistSet, TestlistAuthor, "Author: Vladimir Michl"));
        catclose(cfd);
        return 0;
}
</verb>

<item>Napíšeme soubor zpráv test.m:
<verb>
$set 10 #Testlist
$ #Welcome
# Vítejte v testovacím programu
$ #Autor
# Autor: Vladimir Michl
</verb>

<item>Zkompilujeme soubor zpráv do katalogu:
<verb>
gencat -new -lang C test.cat test.m -h test-cat.h
</verb>

<item>Program přeložíme:
<verb>
gcc -o test test.c
</verb>

<item>Umístíme katalog do adresáře s~českými katalogy a nastavíme
proměnnou <tt>NLSPATH</tt> do tohoto adresáře
<verb>
mv test.cat /usr/share/locale/cs_CZ.iso88592/LC_MESSAGES
export NLSPATH=/usr/share/locale/%L/LC_MESSAGES/%N.cat
</verb>

<item>Nastavíme proměnnou <tt>LC_ALL</tt> a spustíme test
<verb>
LC_ALL=C test
LC_ALL=cs_CZ.ISO-8859-2 test
</verb>

</enum>

<sect2>GNU gettext

<p>
K~tomuto způsobu je třeba si stáhnout GNU gettext z~nějakého FTP.
Já osobně považuji tento způsob za daleko lepší než první.

<p>
Katalogy zpráv bývají ve dvou tvarech a to s~příponou .pot a .po.
S~příponou .pot jsou to pouze zprávy vytažené ze zdrojáků,
kdežto soubory s~příponou .po jsou soubory, které již mají alespoň
některé zprávy přeložené. .po soubor má následující strukturu:

<itemize>
<item>Řádky začínající znakem <tt>#</tt> jsou komentářem.
<item>Řádky které začínají řetězcem <tt>#:</tt> jsou odkazy, kde se
  řetězec vyskytuje ve zdrojovém kódu.
<item>Řádkem <tt>msgid "xxxxxx"</tt> nebo <tt>msgid ""</tt> začíná
  původní řetězec uvedený ve zdrojovém kódu.
<item>Řádkem <tt>msgstr "xxxxxx"</tt> nebo <tt>msgstr ""</tt> začíná
  přeložený řetězec.
<item>Řádky začínající řetězcem <tt>#,</tt> informují o stavu překladu
  nebo formátu.
</itemize>

<p>
Výjimku tvoří první dvojice <tt>msgid</tt> a <tt>msgstr</tt>, kde se
uvádí informace o konkrétním katalogu.

<p>
Příklad .po souboru:

<verb>
# Czech translations for the GNU gettext messages
# Copyright (C) 1996 Free Software Foundation, Inc.
# Vladimir Michl <Vladimir.Michl@upol.cz>, 1997.
# Version: 1.1
#
msgid ""
msgstr ""
"Project-Id-Version: fileutils 3.15a\n"
"POT-Creation-Date: 1997-01-26 00:26-0600\n"
"PO-Revision-Date: 1997-04-23 20:21+0200\n"
"Last-Translator: Vladimir Michl <Vladimir.Michl@upol.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8-bit\n"

#: src/chgrp.c:144
msgid "group number"
msgstr "číslo skupiny"

#: src/chgrp.c:290 src/chmod.c:234 src/chown.c:254 src/cp-aux.c:86
#: src/dd.c:1121 src/df.c:576 src/dircolors.c:121 src/du.c:238
#: src/install.c:625 src/ln.c:347 src/ls.c:2805 src/mkdir.c:70 src/mkfifo.c:68
#: src/mknod.c:79 src/mv.c:407 src/rm.c:543 src/rmdir.c:94 src/sync.c:46
#: src/touch.c:262
msgid ""
"\n"
"Report bugs to fileutils-bugs@gnu.ai.mit.edu"
msgstr ""
"\n"
"Popis chyb zasílejte na adresu fileutils-bugs@gnu.ai.mit.edu (pouze "
"anglicky),\n"
"popis chyb v~překladu zasílejte na adresu cs@li.org"

Pokud se těsně před msgid vyskytne řádek #, fuzzy, pak je tento řetězec považován za neúplně přeložený. Např:

#, fuzzy
msgid "OK"
msgstr "xxx"

</verb>

<p>
Pro práci s~katalogem existuje několik utilit:

<itemize>
<item>xgettext pro vytvoření katalogu zpráv ze zdrojových kódů
<item>msgcmp k~porovnání dvou katalogů zpráv
<item>msgmerge ke spojení starého přeloženého katalogu s~katalogem novým, nepřeloženým
<item>msgfmt ke kompilaci katalogu zpráv do binárního formátu
<item>msgunfmt k~dekompilaci
</itemize>

<p>
Zkompilované katalogy musí mít příponu .mo.

<p>
Příklad použití:

<enum>
<item>Napíšeme program test.c

<verb>
#include <locale.h>
#include <stdio.h>
#include <libintl.h>

#define PACKAGE "test"
#define LOCALEDIR "/usr/share/locale"

char main() {
        setlocale(LC_MESSAGES, "");
        bindtextdomain (PACKAGE, LOCALEDIR);
        textdomain (PACKAGE);

        printf("%s\n", gettext("Welcome in test program"));
        printf("%s\n", gettext("Author: Vladimir Michl"));
        return 0;
}
</verb>

<item>Vytvoříme katalog zpráv použitím příkazu xgettext
<verb>
xgettext test.c
</verb>

<item>Přeložíme zprávy a vyplníme hlavičku v~souboru messages.po. Výsledek bude vypadat takto:
<verb>
# Czech translation of test.
# Vladimir Michl <Vladimir.Michl@upol.cz>, 1997.
#
msgid ""
msgstr ""
"Project-Id-Version: test 1.0\n"
"POT-Creation-Date: 1997-05-02 16:28+0000\n"
"PO-Revision-Date: 1997-05-02 18:00+0200\n"
"Last-Translator: Vladimir Michl <Vladimir.Michl@upol.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.c:13
msgid "Welcome in test program"
msgstr "Vítejte v~testovacím programu"

#: test.c:14
msgid "Author: Vladimir Michl"
msgstr "Autor: Vladimír Michl"
</verb>

<item>Katalog přeložíme
<verb>
msgfmt -v -o test.mo messages.po
</verb>

<item>Přeložíme zdroják
<verb>
gcc -o test test.c -lintl
</verb>

<item>Přeložený katalog umístíme do adresáře s~katalogy a spustíme program
<verb>
mv test.mo /usr/share/locale/cs_CZ.iso88592/LC_MESSAGES
LC_ALL=C test
LC_ALL=cs_CZ.ISO-8859-2 test
</verb>

</enum>

<sect2>Zdroje informací

<p>
Manuálové stránky: catopen(3), catclose(3), catgets(3), locale(7), setlocale(3)
Info stránky: gettext

<sect2>Dostupné katalogy

<p>
Přehled programových balíků, které jsou lokalizovány i které na
lokalizaci teprve čekají naleznete na
<url url="http://www.inf.upol.cz/~michlv/gnu-loc.shtml">.

<p>
Katalogy je možné získat na 
<url url="http://www.inf.upol.cz/~michlv/ftp/catalogs/">
nebo <url url="ftp://ftp.fi.muni.cz/pub/localization/locale/catalogs/">.
Katalogy pro LyX jsou na <url url="ftp://merkur.econ.muni.cz/pub/lyx.cz/">.
Pro KDE jsou české a slovenské katalogy k~dispozici v~podadresářích
<tt>po/cs/</tt> a <tt>po/sk/</tt> jednotlivých adresářů na
<url url="ftp://ftp.ujep.cz/pub/OS/Linux/terezka.ujep.cz/kde/src/">.

<sect2>Přílohy<label id="zeme_jazyky">

<p>
Některé kódy jazyků podle normy
<url url="ftp://dkuug.dk/i18n/ISO_639" name="ISO 639">:

<p>
arabština `ar', čínština `zh', čeština `cs', dánština `da',
holandština `nl', angličtina `en', Esperanto `eo', finština `fi',
francouzština `fr', hebrejština `he', němčina `de', řečtina `el',
maďarština `hu', irština `ga', italština `it', indonéština `id',
japonština `ja', korejština `ko', latina `la', norština `no', perština `fa',
polština `pl', portugalština `pt', ruština `ru', slovenština `sk',
slovinština `sl', španělština `es', švédština `sv', turečtina `tr',
ukrajinština `uk'.

<p>
Některé kódy zemí podle normy
<url url="ftp://dkuug.dk/i18n/ISO_3166" name="ISO 3166">:

<p>
Česká republika `CZ', Slovensko `SK', Německo `DE', Francie `FR', Polsko
`PL', Rakousko `AT', Spojené státy `US'.

<sect>Lokalizace různých aplikací
<label id="programy">
<label id="osmbit">

<p>
Pro lokalizaci některých programů národní klávesnice, fonty a lokalizace
knihovny libc nestačí. Tato kapitola popisuje, co je potřeba dále udělat,
aby jednotlivé programy správně pracovaly v~českém (případně slovenském)
prostředí.
Část programů není ochotna ani s~nastavenými locales zpracovávat
osmibitové znaky bez zvláštního nastavení. Většina poštovních a newsových
programů vyžaduje informaci o explicitně kódování apod..

<p>
Většina popisů v~této kapitole předpokládá, že na počítači už je
nainstalovaná národní klávesnice, ISO-8859-2 fonty a české nebo
slovenské locales.

<sect1>Bash<label id="bash">

<p>
Aby bylo možné v~příkazových řádcích shellu bash zadávat a používat
ne-ASCII znaky, je třeba v~souboru <tt>$HOME/.inputrc</tt> nebo
v~<tt>/etc/profile</tt> uvést první tři z~následujících příkazů:

<tscreen><verb>
set meta-flag on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line
"\e[3~": delete-char
"\e[4~": end-of-line
</verb></tscreen>

<p>
Další tři řádky slouží ke zprovoznění kláves Home, Delete a End při
editaci příkazových řádků.

<sect1>Tcsh<label id="tcsh">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
16.~5.~1999</sf>

<p>
Pro vstup ne-ASCII znaků je nutné, aby byl tcsh přeložen s~volbami
<tt>8b</tt> a <tt>nls</tt> (lze zjistit příkazem <tt>echo $version</tt>).
Bohužel tcsh ignoruje nastavení proměnné prostředí <tt>LC_ALL</tt>,
a řídí se pouze proměnnými <tt>LC_CTYPE</tt> a <tt>LANG</tt>.  Ve
starších verzích tcsh akceptoval osmibitové znaky při jakémkoli
nastavení těchto proměnných (takže stačilo pouhé <tt>setenv LANG</tt>
nebo <tt>setenv LC_CTYPE</tt> bez udání hodnoty), ve verzi 6.08.00 se
tyto proměnné skutečně používají pro nastavování locales, takže při dosti
častém nastavení <tt>LC_ALL=cs_CZ</tt> a <tt>LANG=cs</tt> tcsh považuje
ne-ASCII znaky za netisknutelné a nenačítá je, protože kategorie
<tt>LC_CTYPE</tt> je definována pouze v~locale <tt>cs_CZ</tt>.
Řešením je nastavit

<tscreen><code>
setenv LC_CTYPE cs_CZ
</code></tscreen>

<p>
Aby fungovaly při editaci příkazových řádků klávesy Home, End a Delete,
je nutné do souboru <tt>/etc/csh.cshrc</tt> přidat řádky

<verb>
if ("$term" == "xterm" || "$term" == "vt100" \
      || "$term" == "vt102" || "$term" !~ "con*") then
    # bind keypad keys for console, vt100, vt102, xterm
    bindkey "\e[1~" beginning-of-line  # Home
#    bindkey "\e[2~" overwrite-mode     # Ins
    bindkey "\e[3~" delete-char        # Delete
    bindkey "\e[4~" end-of-line        # End
endif
</verb>

<p>
--- Tato informace sice nesouvisí s~lokalizací, ale je natolik praktická,
že stojí za to ji uvést na tomto místě.

<sect1>XTerm<label id="xterm">

<p>
Pokud se někomu nepodaří zprovoznit klávesnice v~X11, je možné alespoň
pomocí translations v~app-defaults nastavit požadované rozložení kláves
pro program xterm.

<p>
Programy, které si otevírají vlastní okna, tato klávesnice neovlivní.
Nouzově lze do těchto programů vlepovat český text z~okna xtermu pomocí
operace Copy-and-paste, ale pro rozumnou práci je nutné provést lokalizaci
celých X.

<p>
Vcelku spolehlivě funguje počeštění programu xterm pomocí app-defaults
z~adresáře <tt>X11/xterm</tt> z~balíku cs-tools. Mělo by fungovat i pro různé
X-servery. Bohužel například u XFree86 (nebo je to záležitost verze X?)
došlo někde mezi verzemi 3.1.2 a 3.3.2 ke změně, kvůli které je nutné
v~souborech XTerm* nahradit ve všech řádcích obsahujících
<tt>Shift &lt;Key&gt;velké_písmeno</tt> toto <tt>velké_písmeno</tt>
příslušným malým písmenem. Takto upravené soubory fungují na nových
i starších verzích; původní soubory pouze na starších verzích.

<sect1>Rxvt<label id="rxvt">

<p>
<sf>Radim Halíř <url url="mailto:halir@ms.mff.cuni.cz"
name="halir@ms.mff.cuni.cz">; 24.~6.~1998</sf>

<p>
V~Rxvt funguje česká klávesnice od verze 2.4.9. Poslední verzi
rxvt lze sehnat na <url url="http://mason.primenet.com.au/pub/rxvt/">.

<p>
V~čem byl problém? Následující text lze použít jako návod na
úpravu dalších vzdorných programů:

<p>
Rxvt dostupný v~RedHatu i Debianu s~češtinou korektně nefunguje
(a ani nemůže) a je potřeba jej upravit a znovu přeložit.
Při použití "developer" verze 2.4.6, která je k~mání na
<url url="http://babayaga.math.fu-berlin.de/~rxvt/"> lze použít
následující patche:

<verb>
*** configure.OLD       Wed May  6 13:37:12 1998
--- configure   Wed May  6 14:20:34 1998
***************
*** 3108,3114 ****
    cat > conftest.$ac_ext <<EOF
  #line 3110 "configure"
  #include "confdefs.h"
- #define X_LOCALE 1
    #include <X11/Xlocale.h>
  int main() {
  setlocale(LC_CTYPE, "");
--- 3108,3113 ----
</verb>

<verb>
*** command.c.OLD       Wed May  6 15:50:01 1998
--- command.c   Thu May  7 09:03:30 1998
***************
*** 44,50 ****
  # if (XtSpecificationRelease < 6)
  #  define NO_XLOCALE
  # else
- #  define X_LOCALE
  #  include <X11/Xlocale.h>
  # endif
  #endif                                /* NO_XLOCALE */
--- 44,49 ----
***************
*** 1103,1111 ****
  
      Input_Context = NULL;
  
! # ifdef MULTICHAR_SET
!     setlocale(LC_CTYPE, "");
! # endif
  
      if (rs_inputMethod == NULL
  # ifndef KANJI
--- 1102,1108 ----
  
      Input_Context = NULL;
  
!     setlocale(LC_ALL, "");
  
      if (rs_inputMethod == NULL
  # ifndef KANJI
</verb>
-------------------------------------------------------------------------------

<p>
Jak je vidět, základní problém je v~tom, že se volání funkce
<tt>setlocale()</tt> zakompiluje pouze je-li při překladu definován
symbol <tt>MULTICHAR_SET</tt>. Bez této funkce si o češtině můžeme
nechat jen zdát...

<p>
Po aplikaci záplaty stačí standardní cyklus
<tt>configure; make; make install</tt>. Pak
už jen mít správně nastavené české locale...

<p>
Problém s~tím, že se na začátku nevolá <tt>setlocale()</tt>, nemá jen
rxvt. Stejně "ne-internacionálně" se chová i nxterm, xjed a další. Pouhé
přidání <tt>setlocale(LC_CTYPE, "")</tt> však obvykle postačuje pouze u
programů, které neotvírají vlastní okna v~prostředí X11 a které nepracují
s~vícebajtovými znaky.

<p>
Pro opravy programů určených pro prostředí X11 je možné se
inspirovat například ve zdrojových textech programu xterm na <url
url="ftp://ftp.x.org/pub/R6.4/xc/programs/xterm/"> (volání funkce
<tt>XtSetLanguageProc (NULL, NULL, NULL)</tt> v~<tt>main.c</tt> a tělo
funkce <tt>VTInitI18N()</tt> v~<tt>charproc.c</tt>) nebo ve zdrojových
textech editoru fte upravených Zdeňkem Kabeláčem pro použití IM z~<url
url="http://decibel.fi.muni.cz/debian/fte_0.49.2.src.tag.gz">, soubor
<tt>src/con_i18n.cpp</tt>.

<sect1>Ls<label id="ls">

<p>
Aby příkaz <tt>ls</tt> nevypisoval místo ne-ASCII znaků ve jménech souborů
otazníky, je nutné používat <tt>ls -N</tt> nebo <tt>ls --8bit</tt>.

<sect1>Less<label id="less">

<p>
Program less implicitně zobrazuje znaky s~kódy &gt;= 128 jako šestnáctkové
kódy uzavřené mezi znaky <tt>&lt;&gt;</tt> (např. znak <tt>Č</tt> jako
<tt>&lt;C8&gt;</tt>) a řídící znaky ve formě <tt>^x</tt> (například znak
control-A (s~kódem 1) zobrazí jako <tt>^A</tt>).

<p>
Novější verze zobrazují osmibitové znaky, pokud jsou nastaveny locales
(<tt>LC_CTYPE</tt> nebo <tt>LANG</tt>). Pro starší verze je možné
použít parametr <tt>-r</tt>, nastavit proměnnou prostředí <tt>LESS</tt>
na <tt>-r</tt>, nastavit proměnnou prostředí <tt>LESSCHARSET</tt> na
<tt>latin1</tt> (v~tomto případě zcela vyhovuje i pro ostatní kódy
ISO-8859-x), nebo nastavit proměnnou <tt>LESSCHARDEF</tt> podle popisu
na manuálové stránce. Místo nastavování proměnných prostředí je možné
zadat požadované hodnoty v~sekci <tt>#env</tt> souboru
<tt>$HOME/.lesskey</tt>:

<tscreen><verb>
#env
LESSCHARSET = latin1
</verb></tscreen>

<p>
a příkazem lesskey tento soubor přeložit na konfigurační soubor pro
less --- <tt>$HOME/.less</tt>.

<p>
Pozor:
Pokud zobrazovaný soubor obsahuje řídící znaky, pak při nastavení pomocí
-r program less neví, jak opravdu vypadá výsledek na obrazovce, a může
například špatně zalamovat řádky.

<sect1>Groff<label id="groff">

<p>
Pro lokalizaci balíku groff je nutné, aby podporoval kódování ISO-8859-2.
Úprava groff-latin2 vytvořená Henrykem Paluchem a Janem Kasprzakem je
k~dispozici na <url url="ftp://ftp.fi.muni.cz/pub/localization/groff/"> pod
názvem groff-latin2. Aby groff používal správnou znakovou sadu, je nutné
nastavit proměnnou prostředí <tt>GROFF_TYPESETTER</tt> na hodnotu
<tt>latin2</tt>. Postscriptový tisk v~kódu ISO-8859-2 z~groffu není
pravděpodobně dosud vyřešen.

<p>
Dále je třeba nastavit české dělení slov. Program groff používá TeXové
vzory dělení. Následující příkaz zkopíruje soubor, který tyto vzory dělení
obsahuje a odstraní vše kromě obsahu příkazu <tt>\patterns</tt> (za
posledním vzorem vypustí vše počínaje uzavírací složenou závorkou):

<tscreen><code>
awk '/\\patterns{/, /}/' /usr/share/texmf/tex/generic/hyphen/czhyph2e.tex \
  | sed -e 's/^.*\\patterns{//' -e 's/}.*//' -e '/^$/d' \
  > /usr/lib/groff/tmac/hyphen.cs
</code></tscreen>

<p>
Pak je nutné v~souboru <tt>/usr/lib/groff/tmac/troffrc</tt>
změnit řádek <tt>.do hla us</tt> na <tt>.do hla cs</tt> a řádek
<tt>.do hpf hyphen.us</tt> na <tt>.do hpf hyphen.cs</tt>.

<sect1>Joe<label id="joe">

<p>
Na adrese <url url="ftp://ftp.vslib.cz/pub/unix/linux/localization/"> je
patch, který zajistí, že editor joe bude používat locales. Upravený
joe umí se správně nastavenými locales pracovat s~osmibitovými znaky
i bez nastaveného parametru <tt>-asis</tt> a navíc správně rozeznává
hranice slov s~diakritikou.  Pro češtinu je vhodné spouštět editor
s~parametrem <tt>-french</tt> nebo odstranit mezeru před touto volbou
v~souboru <tt>/usr/lib/joe/joerc</tt> nebo <tt>$HOME/.joerc</tt>, aby
joe při přeformátovávání textu dával za interpunkci na konci věty pouze
jednu mezeru.

<p>
Bez zmíněného patche je nutné nastavit volbu <tt>-asis</tt> (tak jak je
popsáno u <tt>-french</tt>), aby bylo možné pracovat se znaky s~kódy
většími než 127. Potom však joe písmena s~diakritikou nepokládá za
písmena, takže například slovo uživatel považuje za tři slova.

<sect1>Midnight Commander<label id="mc">

<p><sf>Petr Staněk 'Šnek' <url url="mailto:snek@penguin.cz"
name="snek@penguin.cz">,
Vítězslav Samel <url url="mailto:xsamel00@dcse.fee.vutbr.cz"
name="xsamel00@dcse.fee.vutbr.cz"> a další</sf>

<p>
Midnight Commander používá rámečky, které jsou v~českých fontech na
jiném místě, proto vypadá, tak jak vypadá. Tento problém je možno
vyřešit malou úpravou některého českého fontu (ale potom to už doopravdy
NEBUDE český font, protože bychom museli upravit i~znaky na místě
písmenek Ú a dalších). Jeden takto upravený font pro linuxovou konzolu
je k~dispozici někde na ftp.inet.cz.

<p>
Aby Midnight Commander (dále jen MC), správně zobrazoval české fonty,
je nutné spustit MC s~parametrem <tt>-m</tt>, a nastavit
v~"Options/Display bits" volbu "(*) Full 8 bits" (platí pro starší
verze MC). Spouštění <tt>mc -m</tt> lze
automatizovat dopsáním <tt>alias mc='mc -m'</tt> do souboru
<tt>&tilde;/.bashrc</tt> nebo <tt>&tilde;/.cshrc</tt>, podle toho,
jaký shell používáte.

<p>
V~případě novějšího MC (testována verze 4.1) se musí nastavit
v~"Options/Display bits" volba "(*) Full 8 bits output".
K~tomu, aby šlo psát české znaky, je také nutno zapnout volbu
"[x] Full 8 bits input".

<p>
Poznámka: MC používá editor, jehož jméno je uvedeno v~proměnné prostředí
<tt>EDITOR</tt>, implicitně vi. Pokud tedy chcete používat například editor
joe bez úpravy pro podporu locales, přidejte do svého
<tt>$HOME/.bash_profile</tt> řádek <tt>export EDITOR='joe -asis'</tt>.

<sect1>Databáze MySQL<label id="mysql">

<p><sf>Autor informací: Jan Pazdziora <url url="mailto:adelton@fi.muni.cz"
name="adelton@fi.muni.cz">, 1998</sf>

<p>
V~nových verzích je obsažena tabulka s~českým tříděním od Jana Pazdziory.
Má-li být použita, je nutné spustit <tt>./configure</tt> s~volbou
<tt>--with-charset=czech</tt>.

<p>
U starších verzí (testováno s~verzí 3.20.31e) bylo nutné souborem
z~<url url="http://www.fi.muni.cz/~adelton/l10n/mysql-ctype-czech.c">
nahradit soubor <tt>strings/ctype-latin2.c</tt> v~rozbalené distribuci
a příkaz <tt>./configure</tt> spustit s~volbou <tt>--with-charset=latin2</tt>.

<p>
Je také k~dispozici překlad souboru chybových hlášení
<url url="http://www.fi.muni.cz/~adelton/l10n/mysql-sql-share-czech-errmsg.txt">.
Zkopírujte ho do <tt>sql/share/czech/errmsg.txt</tt> a přegenerujte
binární soubor <tt>sql/share/czech/errmsg.sys</tt> příkazem

<tscreen><code>
extra/comp_err sql/share/czech/errmsg.txt sql/share/czech/errmsg.sys
</code></tscreen>

<p>
Používání českých chybových hlášení se pak zapne při startu serveru
mysqld parametrem <tt>--language=czech</tt>.

<p>
Upozornění: tato třídicí tabulka implementuje posloupnost, ve které záleží
na velikosti písmen (case sensitivity). Vzhledem k~tomu, že manuál MySQL
říká, že třídění na velikosti písmen nezávisí, byly by výsledky (byť
správné pro češtinu) nekompatibilní se zbytkem MySQL. Proto tato tabulka
nebyla poslána do oficiální distribuce. Na nalezení řešení problému
se pracuje, pokud k~němu máte nějaký komentář, napište autorovi počeštění.

<sect1>Perl<label id="perl">

<p><sf>Autor informací: Jan Pazdziora <url url="mailto:adelton@fi.muni.cz"
name="adelton@fi.muni.cz">, 1998</sf>

<p>
Podle všeho pokud má Perl používat locales, je nutné mít verzi 5.004.
Pro nastavení locales podle hodnot proměnných prostředí musí skript
obsahovat příkaz

<tscreen><code>
use locale;
</code></tscreen>

nebo musí být perl spuštěn příkazem

<tscreen><code>
perl -Mlocale další parametry
</code></tscreen>

<p>
Pro ověření, zda podpora locales funguje, lze použít následující
skript:

<tscreen><code>
perl -Mlocale -e '$_="maličký ježeček"; s/\W/-/g; print "$_\n";'
</code></tscreen>

který má správně vytisknout <tt>maličký-ježeček</tt>. Bez fungujících
locales budou nahrazeny pomlčkou i další znaky, které nejsou považovány
za písmena.

<sect1>KDE<label id="KDE">

<p>
Mělo by stačit mít nainstalované locales a proměnnou prostředí
<tt>LC_CTYPE</tt> (nebo <tt>LANG</tt>) nastavenou na <tt>cs_CZ</tt>.

<sect1>Telnet<label id="telnet">

<p>
Pro používání osmibitových znaků je nutné buď přepnout
telnet do binárního režimu nebo použít následující řádek
v~<tt>$HOME/.telnetrc</tt>:

<verb>
localhost set outbinary true
stroj.domena.cz set outbinary true
jiny.jinde.cz set outbinary true
</verb>

<sect1>Rlogin<label id="rlogin">

<p>
Pro umožnění osmibitového přenosu v~programu rlogin slouží
volba <tt>-8</tt>.

<sect1>Nastavení terminálů<label id="terminaly">

<p>

<verb>
stty cs8 -istrip -parenb
</verb>

<sect1>Samba<label id="samba">

<p>
Pro používání národních znaků ve jménech souborů (pro spolupráci
s~Windows-95 nezbytně nutné, protože už při vytvoření nové složky
je v~jejím jméně použita diakritika) je nutné mít Sambu verze
nejméně 1.9.18 (vzhledem k~bezpečnostním dírám je vhodné mít
vždy poslední verzi) a uvést v~konfiguračním souboru
<tt>/etc/smb.conf</tt> řádky

<verb>
client code page = 852
character set = iso8859-2
</verb>

<sect1>Lynx<label id="lynx">

<p>
Od verze 2.5 umí pracovat se stránkami v~kódování ISO-8859-2. Změnu
kódování lze provést ručně pomocí volby
<tt>O)ptions -> display (C)haracter set</tt>, nebo v~konfiguračním
souboru <tt>$HOME/.lynxrc</tt> (soubor lze získat zadáním <tt>&gt;</tt>
po výběru volby <tt>O)ptions</tt>) změnou řádku <tt>character_set</tt> na

<verb>
character_set=ISO Latin 2
</verb>

nebo pro všechny uživatele v~souboru <tt>/usr/local/lib/lynx.cfg</tt>
respektive <tt>/etc/lynx.cfg</tt> změnit řádek <tt>CHARACTER_SET</tt> na

<verb>
CHARACTER_SET:ISO Latin 2
</verb>

<p>
případně ještě

<verb>
ASSUME_CHARSET:iso8859-2
ASSUME_LOCAL_CHARSET:iso8859-2
</verb>

<p>
Od verze 2.8 by měl být schopen korektně zobrazovat jak stránky
v~kódování ISO-8859-2, tak Windows-1250 (pokud mají správně uvedené
kódování v~hlavičce <tt>Content-Type:</tt>).

<p>
Další nastavení už nesouvisejí s~lokalizací:

<p>
Pro zkrácení doby výpisu hlášení lze dále změnit:

<verb>
INFOSECS:1
MESSAGESECS:1
ALERTSECS:1
</verb>

<p>
Pro prohlížení obrázků pomocí lynxu je třeba nastavit

<verb>
MAKE_LINKS_FOR_ALL_IMAGES:TRUE
</verb>

<p>
a pro spouštění na konzole zkopírovat <tt>/etc/mailcap.vga</tt> do
<tt>$HOME/.mailcap</tt>. Lynx pak bude používat prohlížeč zgv.

<sect1>Fvwm95<label id="fvwm95">

<p><sf>Petr Staněk 'Šnek' <url url="mailto:snek@penguin.cz"
name="snek@penguin.cz">; 1997</sf>

<p>
Fvwm95 je virtuální manažer oken, který se vzhledově podobá M$ Win95.
Pro zobrazování českých znaků je nutno upravit konfigurační soubor fvwm95.
Má-li být úprava provedena pouze pro jednoho uživatele zkopírujeme
konfigurační soubor do jeho domácího adresáře jako
<tt>&tilde;/.fvwm2rc95</tt> a provedeme potřebné úpravy:

<tscreen><code>
cp /etc/X11/fvwm95-2/fvwm2rc95 &tilde;/.fvwm2rc95
</code></tscreen>

<p>
Předpokládá se, že máte nainstalovanou podporu češtiny pro X11, včetně
českých fontů. (viz popis 2.2. XFREE 3.2)

<p>
Úprava souboru <tt>$HOME/.fvwm2rc95</tt> spočívá v:

<enum>
<item>nastavením iso-8859-2 fontů pro písma oken, ikon a menu
<verb>
WindowFont  -adobe-helvetica-*-r-*-*-*-120-*-*-*-*-iso8859-2
IconFont    -misc-fixed-*-r-*-*-*-120-*-*-*-*-iso8859-2
MenuFont    -adobe-helvetica-*-r-*-*-*-120-*-*-*-*-iso8859-2
</verb>
<item>počeštění dialogu při práci s~okny

<verb>
AddToMenu "Window-Ops2" "&amp;Obnovit%mini-ray.xpm%"   Iconify -1
+                 "&amp;Přesunout%mini-move.xpm%"      Move-or-Raise
+                 "&amp;Velikost%mini-resize.xpm%"     Resize-or-Raise
+                 "Mi&amp;nimalizovat%mini-lower.xpm%" Iconify 1
+                 "Ma&amp;ximalizovat%mini-max1.xpm%"  Maximize 100 100
+                 ""                               Nop
+                 "&amp;Zabít%mini-bomb.xpm%"          Destroy
+                 "&amp;Ukončit Alt+F4%mini-stop.xpm%" Delete
</verb>

<item>nastavením iso-8859-2 fontů pro modul "Pager"
<verb>
*FvwmPagerFont -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-iso8859-2
</verb>

<item>nastavením iso-8859-2 fontů pro modul "fvwm buttons"
<verb>
*FvwmButtonsFont -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-iso8859-2
</verb>

<item>nastavením iso-8859-2 fontů pro modul "Identity"
<verb>
*FvwmIdentFont -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-2
</verb>

<item>nastavením iso-8859-2 fontů pro modul "FvwmWinList"
<verb>
*FvwmWinListFont -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-iso8859-2
</verb>

<item>nastavením iso-8859-2 fontů pro modul "TaskBar"
<verb>
&num&num&num; Font tlačítka na TaskBaru bez výběru (vystouplý)
*FvwmTaskBarFont -adobe-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-2             
&num&num&num; Font tlačítka na TaskBaru vybraného (zamáčknutý)
*FvwmTaskBarSelFont -adobe-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-2
</verb>

</enum>

<p>
Ukázkové menu je možno najít na URL
<url url="http://linux-cz.inecnet.cz/ftp/fvwm/">

<sect1>Afterstep<label id="afterstep">

<p><sf>Rudolf Ulč <url url="mailto:rudolf.ulc@oku-st.cz"
name="rudolf.ulc@oku-st.cz">; 14.~12.~1998</sf>

<p>
Window manažer Afterstep používá pro konfiguraci svého menu program
wmconfig (viz <tt>man wmconfig</tt>).

<p>
V~souboru menu <tt>/etc/X11/wmconfig/xterm-color</tt> upravíme volání
xterm-color:

<verb>
xterm-color exec "xterm -fn -misc-fixed-medium-r-semicondensed-sans-13-120-75-75-c-60-iso8859-2 &"
</verb>

<p>
Obdobně je třeba upravit řádek pro vyvolání Emacsu
v~<tt>/etc/X11/wmconfig/emacs</tt> (místo <tt>xterm</tt> a
<tt>xterm-color</tt> bude <tt>emacs</tt>).

<p>
Protože menu Afterstepu se skládá ze dvou částí, je třeba také
upravit v~souboru <tt>/usr/share/afterstep/wmconfig.conf</tt> řádek
obsahující volání
<tt>exec xterm -fn &lt;jméno fontu iso-latin-2&gt; &amp;</tt>.

<p>
Totéž (ovšem bez úvodního exec) je třeba udělat v~konfiguraci Wharfu
a Zharfu v~souborech <tt>/usr/share/afterstep/wharf</tt> a
<tt>/usr/share/afterstep/zharf</tt>.

<p>
Protože klávesová kombinace Alt-Q používaná v~Afterstepu pro přepínání
mezi okny koliduje s~funkcí přeformátování odstavce v~Emacsu, je třeba
změnit kombinaci pro přepínání oken například na Alt-Shift-Q takto: ve
všech souborech v~adresáři <tt>/use/share/afterstep/feels</tt> v~části
Windows-alike keys uděláme tuto změnu:

<verb>
#alt + shift + q = return to window
Key q       A        SM      WarpBack
</verb>

<p>
Potom je ještě třeba donutit Afterstep, aby vytvořil kompletní nový
obsah adresáře <tt>GNUstep</tt>. To lze zajistit smazáním adresáře
<tt>$HOME/GNUstep</tt>, který bude při příštím startu Afterstepu
automaticky znovuvytvořen se správným obsahem.

<sect1>Star Office<label id="staroffice">

<p>
Návod na úpravu Star Office verze 3.1, 4.0 a 5.0 pro češtinu je na
<url url="http://www.intersoft.cz/linux/soffice/">.

<sect1>Applixware<label id="applixware">

<p><sf>Jan Derfiňák
<url url="mailto:ja@demax.sk" name="ja@demax.sk">; 14.~12.~1998</sf>

<p>
Zprovoznění české klávesnice v~Applixware je trochu magie.
Následující postup byl vyzkoušen na RedHat 5.2 s~XKB-czsk-forcedIM a
s~applix-4.3-2 (funguje-li někomu i s~jinými verzemi, dejte mi
prosím vědět):

<p>
Přes ujišťování, že nastavování proměnné <tt>_XKB_CHARSET</tt> nemá
pro novou verzi XKB význam, pro Applixware je nezbytné nastavit tuto
proměnnou na hodnotu <tt>iso8859-2</tt>. Je vhodné to udělat ve
spouštěcím skriptu <tt>/opt/bin/applix</tt>. Je též nutné nastavení
<tt>XLIB_FORCE_I18N=2</tt> a <tt>LC_CTYPE</tt> nebo <tt>LC_ALL</tt>
(nejlépe na hodnotu <tt>cs_CZ</tt> nebo <tt>czech</tt>).

<p>
Pro zprovoznění mrtvých kláves je nutné spustit například Word, otevřít
menu File --- Save As a v~položce File: napsat libovolné písmeno s~mrtvou
klávesou. Pak už by měly mrtvé klávesy fungovat v~celém Applixu.

<sect1>Elm<label id="elm">

<p>
Pokud jenom potřebujete poštovní program s~podporou MIME, zkuste program
mutt.

<p>
Aby bylo možné odesílat dopisy obsahující národní znaky, je nutné vytvořit
soubor <tt>$HOME/.elm/elmheaders</tt>, ve kterém jsou definovány hlavičky,
které mají být přidávány do dopisů:

<verb>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
</verb>

<p>
Pro plnou podporu MIME je třeba nainstalovat elm ve verzi ME, kterou
lze získat na
<url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/i386/elm-2.4ME+pl32-1.i386.rpm">
nebo
<url url="ftp://ftp.muni.cz/pub/linux/distributions/redhat/contrib/hurricane/i386/elm-2.4.ME+-37.i386.rpm">.

<p>
V~některých verzích programu elm lze zadat volby přímo v~souboru
<tt>$HOME/.elm/elmrc</tt>:

<verb>
charset = iso-8859-2
displaycharset = iso-8859-2
textencoding = 8bit
</verb>

<sect1>Metamail<label id="metamail">

<p>
Metamail je program pro zobrazování MIME zpráv, který je vyvoláván
z~poštovních programů. Není to samostatný poštovní program. Pro jeho
používání je nutné nastavit proměnnou prostředí <tt>MM_CHARSET</tt>
na <tt>ISO-8859-2</tt>.

<sect1>Mutt<label id="mutt">

<p>
Poštovní program mutt podporuje MIME a znakové sady ISO-8859-x.
V~konfiguračním souboru <tt>$HOME/.muttrc</tt> je nutné pouze
uvést používané kódování:

<verb>
set charset="iso-8859-2"
</verb>

<sect1>Pine<label id="pine">

<p>
V~konfiguračním souboru <tt>/usr/local/lib/pine.conf</tt>,
<tt>/etc/pine.conf</tt> nebo <tt>$HOME/.pinerc</tt> je třeba
uvést používané kódování:

<verb>
character-set=ISO-8859-2
</verb>

<sect1>Tin<label id="tin">

<p><sf>Jan Vyčudilík
<url url="mailto:hv@uhkt.cz" name="hv@uhkt.cz">:
17.~3.~1999</sf>

<p>
Pro odesílání osmibitových zpráv je nutné uvést následující volby
v~konfiguračním souboru <tt>$HOME/.tin/headers</tt>:

<verb>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 8bit
</verb>

<sect1>Slrn<label id="slrn">

<p>
V konfiguračním souboru <tt>/usr/lib/slrn/slrn.rc</tt> nebo
<tt>$HOME/.slrnrc</tt> nastavte

<verb>
set use_mime 1
set mime_charset "iso-8859-2"
</verb>

<sect1>Nn<label id="nn">

<p>
V~souboru <tt>$HOME/.nn/init</tt> je nutné uvést:

<verb>
set data-bits 8
</verb>

<p>
Program nn pravděpodobně negeneruje správné MIME hlavičky -
nevyzkoušeno.

<sect1>Dlouhá jména na partition s~Windows-95/NT<label id="vfat">

<p>
Ma-li být v~Linuxu správně vidět diakritika v~dlouhých jménech
souborů na partition s~Windows-95, je třeba v~souboru
<tt>/etc/fstab</tt> uvést:

<verb>
/dev/hda1  /dos/c  vfat    codepage=852,posix,iocharset=iso8859-2,quiet,umask=000  0 0
</verb>

<p>
Nebo příslušné volby zadat přímo v~příkazu mount.
Je nutné mít jádro, které podporuje vfat (aspoň 2.0.35).

<sect1>Program wget<label id="wget">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
5.~5.~1999</sf>

<p>
Wget je program na stahování WWW stránek nebo celých webových serverů
na lokální disk. Při jeho používání se můžete setkat s~tím, že některé
servery samy rozhodují o tom, v~jakém kódování mají poslat dokument
klientovi, takže dokumenty, které jste si Netscapem bez problémů
prohlíželi v~ISO-8859-2, wget stáhne bez háčků a čárek v~ASCII. V~tomto
případě obvykle pomůže řádek

<verb>
header=Accept-Charset: iso-8859-2
</verb>

v~souboru <tt>$HOME/.wgetrc</tt>.

<sect>TeX a jiné DTP systémy<label id="TeX">

<p><sf>Petr Kolář <url url="mailto:Petr.Kolar@vslib.cz"
name="Petr.Kolar@vslib.cz">; 17.~5.~1999</sf>

Nejnovější verze českého teTeXu pro Red Hat 6.0 je na
<url url="ftp://luznice.felk.cvut.cz/pub/cstex/">.

<p><sf>Michal Choura <url url= "mailto:xchoura@cs.felk.cvut.cz"
name="xchoura@cs.felk.cvut.cz">,
Pavel Janík ml. <url url="mailto:Pavel.Janik@math.muni.cz"
name="Pavel.Janik@math.muni.cz">: 28.~7~1998;
Arnošt Štědrý <url url= "mailto:arnost@uivt.cas.cz"
name="arnost@uivt.cas.cz">: starší verze</sf>

<sect1>Instalace z~RPM balíků CSTeXu pro RedHat

<p>
V~současné době existují pro distribuci RedHat~5.x balíky s~kompletním
českým TeXem. Lze je nalézt na serveru <url
url="ftp://math.feld.cvut.cz/pub/cstex/unix/RPMS/"> a mirrorech, např.
<url url="ftp://ftp.fi.muni.cz/pub/linux/localization/cstex/">. Balíky
obsahují teTeX ve verzi~0.9, a obvykle nejnovější verze doplňků
csTeXu, tedy csplain, cslatex a doplňky do pdfTeXu včetně
Postscriptové verze CS~fontů. Doporučuji před instalací přečíst soubor
<tt>README.cstetex</tt>, kde jsou aktuální informace
o~balících. Rozdíly oproti předchozím verzím lze zjistit příkazem
<tt>rpm -qp --changelog tetex-0.9cs-*.i386.rpm</tt>.

<p>
Postup instalace je jednoduchý. Přesvědčte se, že dosud nemáte žádný
TeX instalován; pokud příkaz

<verb>
# rpm -qa | grep tetex
</verb>

zobrazí nějaký výstup, tedy jméno nějakého balíku, je třeba jej
odinstalovat příkazem <tt>rpm -e jméno_balíku</tt>. Potom lze
nainstalovat balíky s~českým TeXem:

<verb>
# rpm -Uvh tetex-0.9cs-*.i386.rpm
</verb>

Pochopitelně, pokud některou z~částí nechcete instalovat, nemusíte.

<p>
Čerstvě nainstalovaný TeX je dobré nakonfigurovat. K~tomu slouží program
texconfig. Po jeho spuštění se objeví menu, kde doporučuji zkonfigurovat
minimálně dvips. Tento program totiž v~základní konfiguraci přesměrovává
svůj výstup přímo na tiskárnu. Zvolte tedy v~hlavním menu ,,dvips``, dále
,,global settings``, velikost papíru ,,A4``, potom vyberte ,,Set up the
command to print on this printer`` a stiskněte Enter.

<p>
Balíky v~binární formě jsou kompilovány na RedHatu 5.x, a tedy
s~knihovnou glibc. Nebudou proto chodit na starších verzích
RedHatu. Pokud byste je chtěli používat na starších distribucích, je
nutné je přeložit z~balíku <tt>tetex-0.9cs-*.src.rpm</tt>. Vzhledem ke
komplexnosti TeXu však je (alespoň zatím) nutné balík překládat přímo
v~systémových adresářích. Proto nejlepší je překlad provést na nějakém
zkušebním počítači. Pozor, v~průběhu překladu balíku se smaže obsah
adresáře <tt>/usr/lib/texmf</tt>!

<p>
Další informace lze získat z~ftp serveru
<url url="ftp://math.feld.cvut.cz/pub/cstex/unix/README.*">

<sect1>Obecná instalace na libovolný Unix<label id="cstex">

<p>
Existují dvě možnosti. Jednak můžete nainstalovat TeX ze zdrojových kódů
web2c, dnes ve verzi 7.2, a nebo instalovat komplexní teTeX. První
možnost popisuje pan Petr Olšák v~textu, který lze nalézt na <url
url="ftp://math.feld.cvut.cz/pub/cstex/unix/README.web2c">. Pokud máte
dost místa na disku, doporučuji druhou možnost, instalaci teTeXu. Postup
prozkoumal Pavel Janík ml.

<p>
Pro kompilaci a instalaci budete potřebovat asi 100~MB volného
místa. Originální teTeX lze nalézt na <url
url="ftp://ftp.rrzn.uni-hannover.de/pub/local/misc/teTeX-beta/">, dále
budete potřebovat z~<url
url="ftp://math.feld.cvut.cz/pub/cstex/unix/"> soubory
<tt>csfonts.tar.gz</tt>, <tt>cspdftexlib.tar.gz</tt>,
<tt>csplain.tar.gz</tt>, <tt>cspsfonts.tar.gz</tt>,
<tt>csuvodlat.tar.gz</tt>, <tt>enctex.tar.gz</tt> a nejnovější
<tt>cslatex-*-.tar.gz</tt>. Mnoho cenných rad najdete též v~souboru
<tt>README.web2c-7.2</tt> tamtéž. Vzhledem k~rychlosti vývoje
doporučuji též stáhnout nejnovější verzi pdfTeXu z~<url
url="ftp://ftp.cstug.cz/pub/local/cstug/janik/">, soubory
<tt>pdftex.tar.gz</tt>, <tt>Makefile.in</tt> a <tt>configure.in</tt>
(přečtěte si~soubor <tt>Install</tt>, postup se často mění).

<p>
Do libovolného adresáře, např. <tt>/usr/src</tt>,
rozbalte originální zdrojové kódy:

<verb>
# cd /usr/src
# tar xzvf teTeX-src-0.9.tar.gz
</verb>

Dále do nějakého vhodného adresáře umístěte strom vstupních souborů TeXu:

<verb>
# mkdir -p /usr/local/teTeX/share/texmf
# cd /usr/local/teTeX/share/texmf
# tar xzvf teTeX-texmf-0.9.tar.gz
</verb>

Rozbalte distribuční balík enctexu (umožní v~TeXu používat a za
běhu přepínat vstupní kódování TeXových dokumentů):

<verb>
# cd /usr/src/teTeX-0.9
# tar xzvf enctex.tar.gz
</verb>

Instalujte české doplňky do TeXu (Latex není nutno mazat celý, stačí
smazat adresáře <tt>misc</tt>, <tt>input</tt>, a raději
i~<tt>graphics</tt>, <tt>psnfss</tt> a <tt>tools</tt>):

<verb>
# rm -rf /usr/local/teTeX/share/texmf/tex/latex
# cd /usr/local/teTeX/share/
# tar xzvf csplain.tar.gz
# tar xzvf cslatex-*.tar.gz
# tar xzvf csfonts.tar.gz
# tar xzvf cspsfonts.tar.gz
# tar xzvf cspdftexlib.tar.gz
# tar xzvf csuvodlat.tar.gz
</verb>

Pokud chcete používat pdfTeX, nainstalujte nejnovější verzi:

<verb>
# cd /usr/src/teTeX-0.9/texk/web2c
# rm -rf pdftexdir
# tar xzvf pdftex.tar.gz
</verb>

Soubory <tt>Makefile.in</tt> a <tt>configure.in</tt> z~distribuce
pdfTeXu překopírujte do téhož adresáře (přepíší původní). Pak vytvořte
nové soubory <tt>Makefile.in</tt> a <tt>configure.in</tt> příkazem

<verb>
# autoconf -m ../etc/autoconf
# ./configure
</verb>

Vytvořte Makefile pro kompilaci:

<verb>
# cd /usr/src/teTeX-0.9
# ./configure --prefix=/usr/local/teTeX --disable-multiplatform
</verb>

Aplikujte patch enctexu (ovlivní <tt>tex.ch</tt>) a zkopírujte jeho
soubory do TeXového stromu:

<verb>
# cd /usr/src/teTeX-0.9/texk/web2c/
# patch <../../enctex/enctex.patch-to-7.2
# mkdir /usr/local/teTeX/share/texmf/tex/enctex
# cp ../../enctex/*.tex /usr/local/teTeX/share/texmf/tex/enctex
</verb>

Dále je vhodné upravit Makefile pro xdvi tak, aby se jako náhradní
font používal csr10 a změnit standardní velikost papíru z~Letter
na~A4. V~souboru <tt>/usr/src/teTeX-0.9/texk/xdvik/Makefile</tt>
upravte řádek

<verb>
DEFS = -DHAVE_CONFIG_H $(XDEFS)
</verb>

na

<verb>
DEFS = -DHAVE_CONFIG_H -DA4 -DALTFONT=\"csr10\" $(XDEFS)
</verb>

Aby TeX správně pracoval s~českými Postscriptovými fonty, je třeba
v~adresáři <tt>/usr/local/teTeX/share/texmf/dvips/</tt> přidat obsah
souboru <tt>rawfonts.map</tt> na začátek <tt>psfonts.map</tt>. Proto:

<verb>
# cd /usr/local/teTeX/share/texmf/dvips
# mv psfonts.map psfonts.orig
# cat rawfonts.map psfonts.orig > psfonts.map
</verb>

A další úprava Postscriptových fontů je nutná pro správnou činnost
pdfTeXu. Prohlížeče PDF znají jen několik základních fontů, ostatní je
nutné do dokumentu přiložit. Musíte mít nainstalovány fonty, dodávané
s~programem Ghostscript. V~souboru
<tt>/usr/local/teTeX/share/texmf/fonts/type1/adobe/subs</tt> upravte
proměnnou <tt>GSFPATH</tt> tak, aby ukazovala na adresář
s~Postscriptovými fonty Ghostscriptu. Potom skript pusťte, vygenerují
se linky na tyto fonty:

<verb>
# cd /usr/local/teTeX/share/texmf/fonts/type1/adobe/
# ./mklinks
</verb>

Nejvíce problémů je s~TeXovým modulem Babel. Ten totiž obsahuje soubor
<tt>czech.sty</tt>, jehož jméno koliduje se stylem <tt>czech.sty</tt>,
který používáme v~CSTeXu. Pokud Babel nebudete potřebovat, nejjistější
je jej zcela vyjmout:

<verb>
# rm -rf /usr/local/teTeX/share/texmf/tex/generic/babel
</verb>

Pokud jej potřebujete, je nutné upravit soubor
<tt>/usr/local/teTeX/share/texmf/web2c/texmf.cnf</tt> tak, aby soubor
<tt>czech.sty</tt> z~adresáře
<tt>/usr/local/teTeX/share/texmf/tex/csplain</tt> načetl vždy dříve,
než ten z~Babelu.

<p>

Teď již můžete celý teTeX přeložit. Nejprve musíte obnovit TeXovou databázi
souborů ls-R, neboť jste měnili obsah TeXového stromu.

<verb>
# cd /usr/src/teTeX-0.9/texk/kpathsea
# make
# ./mktexlsr
# cd ../..
# make world
</verb>

A~nakonec je třeba vygenerovat české (slovenské) formáty TeXu:

<verb>
# PATH=/usr/local/teTeX/bin:$PATH
# cd /usr/local/teTeX/share/texmf/web2c
# tex -ini csplain.ini
# ln -s latex.fmt cslatex.fmt
# pdftex -fmt pdfcsplain -ini csplain.ini
# etex -efmt=ecsplain -ini \*csplain.ini
# tex -ini cslatex.ini
# cd ../../bin
# ln -s tex csplain
# ln -s tex cslatex
# ln -s pdftex pdfcsplain
# ln -s etex ecsplain
# mktexlsr
</verb>

<p>
Pak už zbývá jen TeX nakonfigurovat (viz odstavec o~teTeXu pro RedHat)
a vyzkoušet.


<sect1>Doplňky pro TeX

<sect2>Program vlnka

<p>
Slouží pro přidání vlnky (mezery, ve které nemůže dojít ke zlomu
řádky). Program je k~dispozici na <url
url="ftp://math.feld.cvut.cz/pub/olsak/vlna/">. Pro RedHat Linux je
k~dispozici RPM balík na <url
url="ftp://ftp.fi.muni.cz/pub/linux/localization/"> a nebo v~adresáři
<tt>contrib</tt> na každém zrcadle RedHatu.


<sect2>csindex

<p>
Program <tt>csindex</tt> slouží pro vytváření správně česky nebo
slovensky setříděných indexů pro LaTeX. Pro RedHat Linux lze nalézt na
<url url="ftp://ftp.fi.muni.cz/pub/linux/localization/">.


<sect2>a2ac

<p>
Utilitka <tt>a2ac</tt> umí do Postscriptového AFM souboru přidat znaky
s~českými akcenty. Slouží pro počešťování Postscriptových
fontů. Program lze nalézt na <url
url="ftp://math.feld.cvut.cz/pub/olsak/a2ac/">, RPM balík pro RedHat
Linux je na <url url="ftp://ftp.fi.muni.cz/pub/linux/localization/">
nebo v~adresáři <tt>contrib</tt> na každém zrcadle RedHatu.


<sect1>České fonty v~TeXu<p>

<sect2>O kódování

<p>
V~současné době existují tři základní možnosti jak v~TeXu psát česky:
<enum>

<item>Použít nativní TeXovský přístup a kódovat české znaky pomocí
  sekvencí <tt>&bsol;'</tt>, <tt>&bsol;v</tt> a
  <tt>&bsol;accent23</tt>, kde <tt>&bsol;'</tt> je sekvence pro čárku,
  <tt>&bsol;v</tt> pro háček a <tt>&bsol;accent23</tt> pro kroužek.

<item> Použít CS-fonty distribuované CSTUGem a pro kódování znaků
  užívat stránku ISO-Latin-2.

<item> Použít EC/DC fonty pokrývající téměř všechny evropské jazyky
  (balík Babel).

</enum>

<p>
Výhody a nevýhody těchto přístupů:

<enum>

<item> Lehká přenositelnost dokumentů jak ve zdrojovém kódu, tak ve
  formě dvi. Tento přístup se kvůli nepřehlednosti vyplácí pouze
  tehdy, pokud češtinu používáme na málo místech v~textu. Příklad
  <tt>sl&bsol;accent23 un&bsol;v ec&bsol;'&bsol;i</tt>
  = slůněcí to myslím dokumentuje.

<item> CS~fonty jsou osmibitové fonty obsahující plnou podporu pro psaní
  češtiny a slovenštiny. Všechny znaky jsou zde obsaženy ve své
  akcentované podobě, nechybí ani české uvozovky a ogonok pro psaní
  polských slov. Ve znacích 1--127 se shodují s~cm-fonty, české a
  slovenské znaky jsou kódovány jako ISO-Latin-2. Instalací CSTeXu se
  zabývá kapitola <ref id="cstex" name="Obecná instalace na libovolný Unix">.

<item> EC/DC fonty se stávají evropským standardem a zdá se, že
  vytlačí z~LaTeXu původní Knuthovy cm-fonty. Kódovány jsou dle
  standardu Cork. Ve spojení s~LaTeX2e a balíkem Babel jsou mocným
  nástrojem k~psaní vícejazyčných dokumentů. Jejich nevýhodou je menší
  typografická čistota a nekompatibilita s~cm-fonty co se týká
  umístění znaků 1--127. Např. čárka nad českým písmenem é se má lišit
  co do velikosti od čárky nad francouzským písmenem é, což v~EC/DC
  fontech z~důvodu nedostatku místa není. Na druhou stranu jsou
  podobně jako cm-fonty k~dostání ve formátu Type~1. Metafontový
  zdroják je poněkud rozsáhlý, tj. stovky malých souborů. Současný
  CSTeX zajišťuje podporu EC/DC fontů pomocí parametru <tt>T1</tt>
  příkazu:
  <verb>
  \usepackage[T1]{czech}
  </verb>
  Je nutno míti na paměti, že v~LaTeXu musí být zavedeny vzory pro
  dělení slov pro T1 kódování, tj. při initexování zadáno
  v~<tt>hyphen.cfg</tt>:

  <verb>
  \DeclareLanguage[IL2,T1]{\czech}{czhyphen.tex}%
                                {\lefthyphenmin=2 \righthyphenmin=3
                                 \@requesthyphens}%
  </verb>

<p>
Pro bližší info o~<tt>czech.sty</tt>: <url
url="http://home.zcu.cz/~snajdr5/cslatex/">

<p>
Pokud nepotřebujeme dělení slov (nechce se nám právě teď instalovat
CSTeX) můžeme použít:

<verb>
\usapackage[T1]{fontenc}
</verb>

</enum>

<p>
Takže (1)~použijeme většinou v~případě, kdy píšeme dopis v~cizině nebo
nám nezbývá čas na instalaci. (2)~je v~současné době podporováno
CSTuGem, takže v~rámci České republiky by měl být
bezproblémový. (3)~je způsob podporovaný v~Evropě, časem by se měl
stát standardem, tj. vesměs dostupným.


<sect2>Formáty fontů

<p>
Do TeXu lze pohodlně začlenit jednak fonty ve formátu Metafontu,
jednak fonty ve formátu Type~1. První lze využít pro všechna zařízení,
druhé je výhodné používat při převodu textu do PostScriptu programem
DVIPS, který zvláště ve velkých rozlišeních generuje menší výstup.


<sect2>Metafontové fonty

<p>
V~současné době vím pouze o~třech plně českých fontových
sadách. Jednak tedy EC-fonty, pak CS-fonty a nakonec Concrete Modern
fonty (vlastně se jedná o~pouhý klon CS-fontů) počeštitelný stejným
mechanismem jako jsou z~CM fontů udělány CS-fonty.

<p>
Dále se vyskytují fonty (např. Pandora) dobře počeštitelné pomocí
virtuálních fontů (programem l2accent <url
url="ftp://ftp.cstug.cz/pub/local/fontware/accents/">).

<p>
Všechny zmíněné fonty jsou dostupné v~archívu <url
url="ftp://ftp.cstug.cz/pub/local/">, <url
url="ftp://ftp.cstug.cz/pub/CTAN/fonts/">.


<sect2>Type~1 fonty

<p>
V~současné době je k~dispozici mnoho českých nebo počeštitelných fontů
ve formátu Type~1. Tyto fonty mohou být buď přímo vestavěny ve
výstupním zařízení nebo mohou být dodávány ve formě souborů s~příponou
<tt>pfa</tt> nebo <tt>pfb</tt>, k~nimž by měl být dodáván i metrický
soubor s~příponou <tt>afm</tt>.


<sect2>Počeštění fontů zabudovaných ve výstupním zařízení.

<p>
Tyto fonty lze počeštit mechanismem virtuálních fontů. Pokud
chcete počeštit pouze fonty ze základní sady, tj.:

<verb>
TimesNewRoman
Helvetica
NewCenturySchoolBook
Palatino
Bookman
</verb>

<p>
lze s~výhodou použít již hotové řešení z~balíku
<tt>cspsfonts.tar.gz</tt>. Obsahuje TFM a VF soubory, které stačí
umístit na patřičná místa (<tt>/usr/lib/texmf/fonts/tfm</tt>,
<tt>/usr/lib/texmf/fonts/vf</tt>). Verze počeštěného teTeXu v~RPM
balících je již obsahuje.

<p>
Pokud vlastníte Postscriptový font ve formě AFM a PFA, resp. AFM a PFB
souborů, jsou rámcově dvě možnosti:

<enum>
<item> Font je již počeštěný, zbývá jej pouze překódovat.
<item> Font zatím neobsahuje všechny české znaky.
</enum>

<p>
Jak to zjistím? Pokud již font obsahuje české znaky, pak je o~nich
informace v~AFM souboru. Podíváme se tedy, zda-li AFM soubor obsahuje
řádky typu:

<verb>
C -1 ; WX 722 ; N Aacute ; B 15 0 706 892 ;
</verb>

<p>
kde místo <tt>Aacute</tt> jsou postupně názvy českých znaků (caron =
háček, acute = čárka, ring = kroužek, tedy Ccaron = Č (C s~háčkem),
uring = ů (u~s~kroužkem)). Pokud se nám podaří najít všechna česká
písmena, můžeme zkusit vygenerovat font příkazem:

<verb>
$ afm2tfm font.afm -t kodovani.enc -v cfont rfont
</verb>

<p>
kde

<verb>
font.afm         je jméno původního fontu
kodovani.enc     je jméno českého kódování
cfont            je jméno českého fontu
rfont		 je jméno raw fontu
</verb>

<p>
Česká kódování jsou dostupná např. v~balíku <tt>a2ac</tt> <url
url="ftp://ftp.cstug.cz/pub/local/cstug/olsak/a2ac">, kde je také
podrobnější info. Jméno českého fontu by mělo být ve shodě s~,,Font
Naming Conventions`` <url
url="ftp://ftp.cstug.cz/pub/tex/CTAN/documentation/fontname/">. Jméno
raw fontu můžete zvolit libovolně, většinou se používá jméno původního
fontu s~předponou r.

<p>
Program <tt>afm2tfm</tt> vygeneruje jednak na standardní výstup řádek:

<verb>
rfont JmenoFontu
</verb>

<p>
který přidáte (po malé úpravě) do souboru <tt>psfonts.map</tt>
(<tt>/usr/lib/texmf/texmf/dvips/misc/psfonts.map</tt>). Co a jak
přesně přidat do tohoto souboru, je lépe konzultovat v~dokumentaci
k~programu DVIPS.

<p>
Dále vytvoří soubor <tt>rfont.tfm</tt> a <tt>cfont.vpl</tt>. Na
posledně jmenovaný aplikujeme program:

<verb>
vptovf cfont.vpl
</verb>

<p>
čímž dostaneme soubory <tt>cfont.tfm</tt> a <tt>cfont.vf</tt>, které
umístíme do adresářů <tt>/usr/lib/texmf/texmf/fonts/tfm</tt> a
<tt>/usr/lib/texmf/texmf/fonts/vf</tt>.

<p>
Pokud font české znaky neobsahuje, můžete se pokusit sjednat nápravu
programem <tt>a2ac</tt> <url
url="ftp://ftp.cstug.cz/pub/local/cstug/olsak/a2ac">, který, pokud
najde jednotlivé akcenty, je schopen vytvořit kompozitní popis všech
českých písmen.

<p>
Podrobnější popis viz dokumentace k~<tt>a2ac</tt>, či článek Virtuální
fonty, accents a přátelé <url
url="ftp://ftp.cstug.cz/pub/tex/local/cstug/sojka/aboutacc/">.



<sect1>LyX

<p>
Program LyX slouží k~vytváření textových dokumentů. Je to nadstavba
nad TeX, přesněji nad makro LaTeX. Uživatel LyXu pracuje s~grafickým
rozhraním, podobajícím se textovým editorům ze světa MS~Windows. Výstup
programu LyX se po stisku tlačítka zpracuje LaTeXem a proto je
výsledný dokument typograficky poměrně kvalitní.

<p>
LyX upravený pro bezproblémovou práci v~češtině pro RedHat Linux lze
nalézt na <url url="ftp://ftp.fi.muni.cz/pub/linux/localization/">.


<sect1>Literatura

<p>
<itemize>
<item>Tomáš Mráz, Postscriptová písma v~TeXu, Zpravodaj CSTUG, 1994, 2,
70--76

<item>Petr Olšák, Program a2ac --- manipulace s~fontem na úrovni Postscriptu,
Zpravodaj CSTUG, 1996, 1, 23--30,
<url url="ftp://math.feld.cvut.cz/pub/cstex/msdos/cspsfont.zip">

<item>Adobe Font Metrics File Format Specification Version 4.0, Adobe
Systems Incorporated, 1992, February

<item>Pavel Herout, Postscriptové fonty pro ty, co o~nich moc nevědí,
Zpravodaj CSTUG, 1996, 1, 43--64

<item>Joachim Schrod, Komponenty TeXu, Zpravodaj CSTUG, 1993, 1--10, 1,
<url url="ftp://ftp.muni.cz/pub/tex/CTAN/documentation/components-of-TeX/">

<item>Donald Knuth, Virtual fonts, a more fun for grand wizards, TUGboat,
1990, April, 1, 11, 13--23,
<url url="ftp://ftp.muni.cz/pub/tex/CTAN/documentation/virtual-fonts.knuth">

<item>Petr Olšák, Typografický systém TeX, CSTUG, 1995

<item>Petr Olšák, TeXbook naruby, CSTUG, 1995,
<url url="ftp://math.feld.cvut.cz/pub/olsak/">

<item>Petr Sojka, Virtuální fonty, accents a přátelé, Zpravodaj CSTUG,
1994, 2, 56--69, <url
url="ftp://ftp.muni.cz/pub/tex/local/cstug/sojka/aboutacc/">
</itemize>

<sect>Emacs<label id="emacs">

<p><sf>Milan Zamazal <url url="mailto:pdm@fi.muni.cz"
name="pdm@fi.muni.cz">; první verze</sf>

<p>
Emacs je rozsáhlý a komplexní program a jeho kompletní počeštění je
netriviální. Navíc v~současnosti připadají v~úvahu dvě verze: Emacs 19 a
Emacs 20.

<p>
Lokalizace Emacsu verze 19 je popsána na
<url url="http://www.freesoft.cz/software/emacs/czech/emacs-19.html">
a využívá balík
<url url="http://www.freesoft.cz/software/emacs/czech/emacs-czech-3.8.tar.gz">.
Cílem lokalizace verze 20 je dosáhnout zahrnutí obsahu počešťovacího
balíku přímo do hlavní distribuce Emacsu. Než bude tohoto cíle dosaženo,
je nutné používat zvláštní počešťovací balíky. Lokalizace verze 20 je
popsána na
<url url="http://www.freesoft.cz/software/emacs/czech/"> a pro verzi 20.3
využívá balík
<url url="http://www.freesoft.cz/software/emacs/czech/emacs-cs-utils-4.2.tar.gz">,
pro verzi 20.2 pak balík
<url url="http://www.freesoft.cz/software/emacs/czech/emacs-cs-utils-4.1.tar.gz">
(též na
<url url="ftp://ftp.fi.muni.cz/pub/localization/emacs/emacs-20/emacs-cs-utils-4.1.tar.gz">).

<p>
Pokud momentálně nemáte možnost se k~balíku emacs-czech dostat, můžete použít
následující nouzové řešení:
<itemize>
<item>
Do svého <tt>&tilde;/.emacs</tt> přidejte řádky
<tscreen><code>
(standard-display-european t)
(set-input-mode (car (current-input-mode))
                (nth 1 (current-input-mode))
                 0)
</code></tscreen>
<item>
Nastavte Emacsu správný font. Tato akce je z~hlediska obecného
popsána v~jiných částech tohoto dokumentu a z~hlediska Emacsu v~jeho
info dokumentaci.
</itemize>

<sect>Tisk<label id="tisk">

<sect1>Tiskárny s~vestavěnými českými fonty

<p>
Postupujte podle návodu uvedeného v~kapitole <ref id="tisktext"
name="Red Hat"> věnované počeštění distribuce Red Hat. Jména souborů
a adresářů je třeba přizpůsobit konkrétnímu systému a distribuci.

<sect1>Postscriptové tiskárny

<p>
Pro přípravu tisku na Postscriptových tiskárnách slouží balík
<url url="http://www-inf.enst.fr/~demaille/a2ps/" name="a2ps">,
který od verze 4.7.21 zahrnuje i program
<url url="http://www.dcs.ed.ac.uk/home/jec/programs/ogonkify/" name="ogonkify">,
sloužící k~přidání ISO-8859-2 znaků k~Postscriptovým fontům
definováním kompozitních znaků. K~a2ps existuje i
<url url="http://www-inf.enst.fr/~demaille/a2ps/po/cs.po" name="katalog">
českých hlášení.

<p>
Další možností je použít filtr od
Petra Macháčka
<url url="http://www.cestina.cz/cestina/pocestovani/unix/WWW/filtr.gz">.
Jedná se o shell skript, který lze použít v~tiskovém příkazu programu
Netscape jako <tt>filtr | lpr </tt> nebo jako <tt>if</tt> či <tt>of</tt>
v~souboru <tt>/etc/printcap</tt>. Některé tiskárny místo Postscriptového
výstupu tisknou definice fontů. Potom pomůže nahrazení prvního řádku

<verb>
%!
</verb>

ve skriptu řádkem

<verb>
%!PS-Adobe-2.0
</verb>

<p>
Hledá se někdo, kdo o tisku napíše něco více.

<sect>Konverze znakových sad<label id="konverze"><label id="cstocs">

<p>
Pro konverzi textových souborů se používá GNU program recode. Mezi českými
a slovenskými uživateli je ovšem mnohem oblíbenější program cstocs, který
byl zpočátku k~dispozici jako samostatný balíček, později byl začleněn do
cs-tools. Jde o skripty v~jazyce perl a awk schopné
konvertovat textové soubory buď pomocí převodu one-to-one nebo one-to-many.
Při převodu one-to-many se například konvertuje znak Copyright (C v~kroužku)
do ASCII jako (c), německé ostré s~se nahrazuje ss apod..
Aktuální verze cstocs (pro Perl 5) je součástí nové distribuce
Cstools, kterou je možné nalézt na libovolném zrcadle CPANU na
<url url="http://www.perl.com/CPAN/authors/id/JANPAZ/">.

<p>
Starší verze, cstocs-3.0, která je též součástí cs-tools-0.19, pracuje
i s~Perlem 4 a obsahuje též skripty pro awk. Je k~dispozici na
<url url="ftp://ftp.muni.cz/pub/localization/linux/obsolete/cs-tools/">.
V~této verzi je chyba. V~souboru <tt>1250.enc</tt> je třeba smazat
poslední prázdný řádek. Pokud má program sloužit pro převod textů
v~němčině, bude navíc vhodné změnit v~souborech <tt>kam.enc</tt>
a <tt>vga.enc</tt> popis znaku <tt>beta</tt> na <tt>ssharp</tt>, aby
byl považován za německé ostré s, které bude při převodu one-to-many
nahrazeno dvěma znaky s, jak je zvykem v~němčině, případně v~souboru
accent definovat náhradu [AOUaou]diaeresis dvojicí [AOUaou]e.

<p>
Pokud nemůžete použít ani perl ani awk, je možné
použít program sed a jeden ze skriptů z~adresáře
<url url="ftp://ftp.fi.muni.cz/pub/localization/charsets/sed/">,
které se používají takto:

<tscreen><code>
sed -f pclat2.isolat2 soubor > vystup
</code></tscreen>

<sect>České třídění<label id="trideni">

<p><sf>Autor informací: Jan Pazdziora <url url="mailto:adelton@fi.muni.cz"
name="adelton@fi.muni.cz">, 1998</sf>

<p>
České třídění zcela podle ČSN nelze implementovat bez použití metod umělé
inteligence. Norma totiž požaduje takové jemnůstky jako zařadit řetězec
"Karel IV" před "Karel II", protože římské číslice se mají nahradit slovy,
a "čtvrtý" je před "druhý". Třídění bez největších výstřelků ČSN zvládá
knihovna glibc s~nainstalovanými locales s~Revision: minimálně 1.10 ---
viz kapitola <ref id="locale" name="locales">. Třídění pomocí locales
v~libc5 nefunguje.

<p>
Pokud váš systém nepoužívá glibc nebo nemůžete použít locales z~nějakého
jiného důvodu, lze použít implementaci funkce
<url url="http://www.fi.muni.cz/~adelton/l10n/cssort/csort.c" name="strxfrm">
od Jana Pazdziory, která převádí český (ISO-8859-2) text na posloupnost,
kterou je potom možno porovnávat pomocí strcmp. Převod je definován tak,
aby následné třídění co nejvíce odpovídal české normě (ČSN; je slovenské
třídění odlišné?), resp. výkladu normy podle pana Olšáka. Soubor obsahuje
také funkci <tt>strcoll</tt>, která provede porovnání dvou řetězců bez
nutnosti předchozí konverze, tedy v~konstantní paměti.

Soubor přeložíme příkazem

<tscreen><code>
cc -c -o csort.o csort.c
</code></tscreen>

<p>
a pomocí

<tscreen><code>
ld -shared -o csort.so csort.o
</code></tscreen>

<p>
z~něj uděláme sdílenou knihovnu. Tu potom použijeme například
nastavením proměnné prostředí <tt>export LD_PRELOAD=/cesta/k/csort.so</tt>,
čímž zajistíme, že se místo implicitních strxfrm a strcoll použijí
výše uvedené, české.

<p>
Další informace o třídění, včetně implementace třídění pro databázi
MySQL, lze nalézt na
<url url="http://www.fi.muni.cz/~adelton/l10n/" name="stránce"> Jana
Pazdziory.

<sect>České manuálové stránky<label id="manstranky">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
27.~10.~1998;
Pavel Janík ml. <url url="mailto:Pavel.Janik@math.muni.cz"
name="Pavel.Janik@math.muni.cz">: starší verze</sf>

<sect1>Instalace

<p>
Pro prohlížení manuálových stránek v~češtině programem man je nutné
mít nainstalovánu podporu zobrazování českých znaků úpravu programu
groff pro ISO-8859-2 popsanou v~kapitole <ref id="groff" name="groff">
a program man verze 1.4h nebo novější.

<p>
České manuálové stránky jsou distribuovány jako zdrojové texty pro
groff ve formátu <tt>.tar.gz</tt> vhodném pro distribuce Slackware,
SLS, Yggdrasil aj., a ve formátu <tt>.rpm</tt> pro distribuce RedHat,
Caldera, Suse apod..

<p>
Instalace stránek ze souboru <tt>.tar.gz</tt> je velmi jednoduchá ---
po rozbalení balíku příkazem

<verb>
tar xfz man-pages-cz-x.xx.tgz
</verb>

<p>
jednoduše v~příslušném adresáři provedeme příkaz <tt>make install</tt>,
který zajistí nainstalování manuálových stránek do adresáře
<tt>/usr/local/man/cs</tt>.

<p>
Instalace stránek ve formátu <tt>.rpm</tt> je ještě jednodušší:

<verb>
rpm -i man-pages-cz-x.xx-x.i386.rpm
</verb>

<sect2>Prohlížení českých manuálových stránek

<p>
Standardní instalace programu man používá k~zobrazování znaků na
terminály zařízení latin1 programu groff. Pro zobrazování českých
znaků ale potřebujeme, aby man používal zařízení <tt>devlatin2</tt>
z~balíku groff-latin2. V~konfiguračním souboru programu man
(<tt>/etc/man.config</tt>, případně někde jinde) proto změníme na
řádku

<verb>
NROFF           /usr/bin/groff -Tlatin1 -mandoc
</verb>

<p>
<tt>Tlatin1</tt> za <tt>latin2</tt>:

<verb>
NROFF           /usr/bin/groff -Tlatin2 -mandoc
</verb>

<p>
Novější verze programu man, který je spravován A. Brouwerem se při
výběru manuálové stránky řídí proměnnou prostředí <tt>LANG</tt>, man
verze 2.x (dostupný v~Debianu) pak pracuje standardně i podle proměnných
<tt>LC_*</tt>. Proto pro prohlížení českých manuálových stránek použijeme
jeden z~následujících ekvivalentních příkazů:

<verb>
bash$ LANG=cs man intro

bash$ export LANG=cs
bash$ man intro

csh$ setenv LANG cs
csh$ man intro
</verb>

<p>
Uživatelé jiných interpretů si jistě příslušné příkazy upraví sami.


<sect1>Prohlížení českých manuálových stránek pod systémem X-Window

<p>
K~prohlížení českých manuálových stránek byl poupraven program xman
ze standardní distribuce X11R6. Podporuje zobrazování českých znaků
v~manuálových stránkách. Tento balík můžete získat z~těchto FTP serverů:

<itemize>
<item><url url="ftp://ftp.inet.cz/pub/People/Pavel.Janik/"> na IGN
<item><url url="ftp://ftp.fi.muni.cz/pub/localization/linux/czman/"> na CESNETu
</itemize>

<p>
Jeho instalace se provádí podobně jako instalace vlastních manuálových
stránek.

<sect1>Projekt "České Manuálové Stránky"

<p>
Tento projekt vznikl aktivitou několika jednotlivců, kterým nejde jen o to,
že sami mají dokonalý operační systém, ale také o to, aby pomohli ostatním
zbavit se těch jejich (OS). Hlavním cílem projektu je popularizace Linuxu a
jeho zpřístupnění široké veřejnosti. Koordinátorem projektu je

<verb>
Pavel Janík ml. <Pavel.Janik@math.muni.cz>
</verb>

<p>
České Manuálové Stránky mají i svou konferenci (czman@linux.cz). Přihlásit
se můžete na adrese czman-subscribe@linux.cz:

<verb>
echo subscribe czman Jméno Příjmení | mail czman-subscribe@linux.cz
</verb>

<p>
Konference je věnována nejenom překladatelům, ale i uživatelům, kteří mají
s~českými manuálovými stránkami problémy.

<sect2>Odkazy

<p>
<itemize>
<item><url url="ftp://ftp.inet.cz/pub/People/Pavel.Janik/">
<item><url url="ftp://ftp.fi.muni.cz/pub/linux/localization/">
<item><url url="http://www.inet.cz/~pjanik/czman/">
</itemize>

<sect>Kontrola českého pravopisu (spell-checker)<label id="spellcheck">

<p><sf>Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">:
14.~5.~1999;
Pavel Janík ml. <url url="mailto:Pavel.Janik@math.muni.cz"
name="Pavel.Janik@math.muni.cz">: starší verze</sf>

<p>
Nejrozšířenějším programem pro kontrolu pravopisu na unixových systémech
je GNU ispell (v~době psaní tohoto textu verze 3.1.20). Vzhledem k~jeho
schopnostem se spíše jedná o pouhé odhalování překlepů. Ispell totiž
neodhalí syntaktické ani stylistické chyby, takže otřepané "víly VYLI
věnce" je podle něj správně (jelikož "vyli" je také české slovo).

<p>
Soubory s~českým slovníkem pro ispell naleznete na adrese
<url url="ftp://ftp.vslib.cz/pub/unix/ispell/czech/">. Tento
slovník je průběžně rozšiřován a v~květnu 1999 rozpoznával více
než 1~300~000 slovních tvarů. Na rozšiřování slovníku se může
podílet každý. Stačí zaslat dosud neznámá česká slova (obsah
souboru <tt>$HOME/.ispell_czech</tt> nebo výstup z~příkazu
<tt>ispell -d czech -l < soubor</tt>) na adresu 
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">.

<sect1>Práce s~ispellem

<p>
Ispell je možné používat buď samostatně --- pomocí příkazu

<verb>
ispell -d czech soubor
</verb>

<p>
nebo je možné jej volat z~různých editorů.

<p>
A jak ispell funguje? Máme například soubor, který obsahuje následující
text:

<verb>
Tvůrcem opračního sytému Linux je Linus Torvalds.
</verb>

<p>
Při kontrole příkazem <tt>ispell -d czech soubor</tt> (nebo při stisknutí
klávesy F8 v editoru joe, apod.) ispell "skočí" na slovo "opračního",
protože slovo "Tvůrcem" je ve slovníku obsaženo. Slovo "opračního" bude
zvýrazněno, a bude nabídnuta (v~tomto případě jediná) možnost opravy
--- <tt>0: operačního</tt>. Stačí stisknout nulu, a slovo "opračního"
bude opraveno na "operačního". Chybné slovo "sytému" nechá ispell bez
povšimnutí, protože se může jednat o třetí pád slova "sytý", ale zastaví
se na slově "Linus". Tady nabídne několik možností, ale protože původní
slovo je správně, stiskneme klávesu mezera nebo "a" (Accept), což znamená
"ponechat slovo uvedené v~textu". Mezera způsobí, že další výskyt téhož
slova ve stejném souboru bude opět chybou, zatímco "a" bude toto slovo
připouštět až do konce zpracovávaného souboru. Také je možné stisknutím
"i" slovo zařadit do uživatelského slovníku <tt>$HOME/.ispell_czech</tt>,
takže jeho výskyt v~kterémkoli v~budoucnosti kontrolovaném souboru bude
tolerován. Pokud je slovo skutečně špatně, a ispell nenabízí správnou
opravu, je možné stisknout klávesu "r" a zadat správné slovo.

<sect1>Ispell pro Emacs

<p><sf>Milan Zamazal <url url="mailto:pdm@fi.muni.cz"
name="pdm@fi.muni.cz">; první verze</sf>

<p>
Český ispell je podporován balíkem emacs-czech od verze 3.5 (ve
verzích 3.5 a 3.6 je drobná chyba). Český slovník lze zvolit
například v~menu "Edit/Spell/Select Czech". Bližší informace
o~používání ispellu a volbě slovníků naleznete v~dokumentaci
Emacsu.

<sect1>Ispell pro Joe

<p>
Podpora anglické kontroly pravopisu je v~editoru joe vestavěna.
Kombinací kláves <tt>'CTRL+[ N'</tt> kontrolujeme jedno slovo,
klávesami <tt>'CTRL+[ L'</tt> celý soubor.

Českou podporu lze jednoduše nakonfigurovat.
Stačí do souboru <tt>&tilde;/.joerc</tt> nebo přímo do souboru
<tt>/usr/lib/joe/joerc</tt> doplnit následující řádky:

<tscreen><code>
 Czech spell-check macros

:def czechspellfile filt,"cat &gt;ispell.tmp;\
ispell -d czech ispell.tmp &lt;/dev/tty &gt;/dev/tty;cat ispell.tmp;\
/bin/rm ispell.tmp",rtn,retype
:def czechspellword psh,nextword,markk,prevword,markb,filt,\
"cat &gt;ispell.tmp;ispell -d czech ispell.tmp &lt;/dev/tty &gt;/dev/tty;\
tr -d &lt;ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword
:def czechspellline psh,eol,markk,bol,markb,filt,"cat &gt;ispell.tmp;\
ispell -d czech ispell.tmp &lt;/dev/tty &gt;/dev/tty;\
tr -d &lt;ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,eol

czechspellfile .k8
czechspellword .k9
czechspellline ^k .k9
</code></tscreen>

<p>
Tato makra definují, že funkční klávesa F8 provede kontrolu českého
pravopisu v~celém souboru, klávesa F9 zkontroluje slovo, na které stojí
kursor. (POZOR ovšem na to, že neupravený joe neumí rozeznávat česká
písmenka ...). Kombinace kláves 'CTRL+k F9' provede kontrolu pravopisu
na jednom řádku.

<sect>Jak počeštit různé distribuce<label id="distribuce">

<sect1>Debian GNU/Linux

<p><sf>Petr Kolář <url url="mailto:Petr.Kolar@vslib.cz"
name="Petr.Kolar@vslib.cz">; 17.~5.~1999</sf>

<p>
Pokud používáte XFree86 3.3.3.1 není nutné provádět patche na
konfigurační soubory pro X11. Stále je však možné se setkat
s~aplikacemi, které nepodporují XKB, a proto s~XKB klávesnicemi
nebudou fungovat.

<p><sf>Petr Špatka <url url="mailto:xspatk00@stud.fee.vutbr.cz"
name="xspatk00@stud.fee.vutbr.cz">: 5.~1.~1999;
Milan Zamazal <url url="mailto:pdm@fi.muni.cz" name="pdm@fi.muni.cz">,
Vítězslav Samel <url url="mailto:xsamel00@dcse.fee.vutbr.cz"
name="xsamel00@dcse.fee.vutbr.cz"> a další starší verze</sf>

<sect2>Současný stav oficiální distribuce

<p>
V~aktuální stabilní verzi Debianu jsou následující balíky vztahující se
k~českému prostředí:

<itemize>
<item>kbd: obsahuje ISO~8859-2 fonty pro konzolu a některé české klávesnice
<item>xfntil2: ISO~8859-2 fonty pro XFree
<item>emacs-czech: počeštění Emacsu
<item>cstocs: známý převodník znakových sad
<item>locales: přizpůsobení systému pro různé jazyky a teritoria
</itemize>

Tyto balíky s~výjimkou posledního jsou součástí Debianu od verze 1.3 a
lze je bez problémů používat i na Debianu~1.2.

Existuje neoficiální podpora českého (La)TeXu pro Debian 1.2 a vyšší.
Tyto balíky nejsou oficiální součástí Debianu z~důvodu problémů
s~copyrightem CsTeXu. Počeštění teTeXu pro aktuální stabilní (a
většinou i vývojové verze) Debian GNU/Linux jsou k~dispozici na
<url url="http://www.debian.cz/proj/cstex/index.php3">

Balíky pro starší verze Debianu lze nalézt na <url
url="ftp://ftp.fi.muni.cz/pub/linux/localization/cstex-deb/">.

Kromě toho by všechny aplikace v~Debianu~1.3 a novějším měly podporovat
8-bitový vstup (má-li to v~daném případě smysl).  Pokud tomu tak není, lze to
zaslat jako bug-report přes debianovský Bug Track System.  Můžete též využít
možnosti nechat si hlášené přeložit (viz <url url="ftp://www.debian.cz">).

Debianu dosud chybí:
<itemize>
<item>České manové stránky.
<item>Kontrola Českého pravopisu.
</itemize>

Máte-li zájem o~některou z~těchto věcí, musíte postupovat podle návodů
v~jiných částech tohoto dokumentu.  

V~současné době je mezi maintainery Debianu pouze jediný zástupce České
republiky --- Milan Zamazal <htmlurl url="mailto:pdm@fi.muni.cz"
name="pdm@fi.muni.cz">.  Na něj se lze obracet s~náměty ohledně podpory
češtiny v~Debianu.  Nezapomeňte také, že Debian je otevřená distribuce
("users for users"), chcete-li se tedy k~jeho počešťování aktivně
připojit, nic vám nebrání stát se dalším z~jeho maintainerů.  Můžete též
pomoci radami a nápady, budete-li sledovat maillisty debian-i18n a
debian-devel.  Informace o~nich naleznete na WWW stránkách Debian
projektu na <url url="http://www.debian.org">. Je také dobré
sledovat <url url="ftp://www.debian.cz">, což je prezentační místo
některých projektů pro počeštění Debianu.

<sect2>Ruční zásahy do oficiální distribuce

<sect3>Konzola
<p>
Instalace češtiny pro textovou konzolu Debian GNU/Linuxu.

<itemize>
<item>
V~souboru <tt>/etc/kbd/config</tt> je potřeba odkomentovat řádky
s~příkazy <tt>CONSOLE_FONT</tt> a <tt>CONSOLE_MAP</tt> a ty upravit na tvar: 

<tscreen><code>
CONSOLE_FONT=lat2-16.psf
CONSOLE_MAP=iso01.uni
</code></tscreen>

Samozřejmě lze použít i libovolný jiný font lat2-*.psf.
<item> Zvolit požadované rozložení klávesnice příkazem kbdconfig (v~distribuci
je qwerty i qwertz česká klávesnice).
</itemize>

Několik upozornění:

<itemize>
<item>
Některé X-servery zruší konzolový font z~paměti počítače, takže po přepnutí
z~X-oken na konzolu je nutné znovu zadat příkaz "setfont lat2-16.psf" nebo mít
nainstalovaný vtfontd.
<item>
V~případě, že používáte vývojové jádro řady 2.1.XX, proběhne korektní nastavení
zobrazování českých znaků pouze na první konzole.
</itemize>

<sect3>X Window System

<p>
Instalace češtiny do XFree86.

<itemize>
<item>
Pokud si stáhnete balíček <url
url="http://www.debian.cz/proj/czdebhowto/debian-cz.tgz"> můžete si zjednodušit
práci.  Najdete v~něm tento návod v~textové formě a pomocné soubory X11patch a
cz, které jsou v~některých bodech tohoto návodu použity.

<item>
Nainstalovat balík xfntil2 s~českými fonty pro XFree86.

<item>
Nainstalovat balík locales.

<item>
Do souboru /usr/X11R6/lib/X11/locale/iso8859-2/Compose přidat následující řádky:
<tscreen><code>
<yacute>                               : "\375"        yacute
<aacute>                               : "\341"        aacute
<iacute>                               : "\355"        iacute
<eacute>                               : "\351"        eacute
<uacute>                               : "\372"        uacute
</code></tscreen>
<item>
Opravit soubor /usr/X11R6/lib/X11/locale/locale.alias. Zde je potřeba
změnit tyto řádky (pozor, nenásledují po sobě):
<tscreen><code>
cs_CS                   cs_CZ.ISO8859-2
czech                   cs_CS.ISO8859-2
</code></tscreen>na:
<tscreen><code>
cs_CZ                   cs_CZ.ISO8859-2
czech                   cs_CZ.ISO8859-2
</code></tscreen>
<item>
Předchozí dva body lze provést také tak, že provedete následující příkaz:
<tscreen><code>
patch -p0 <X11patch
</code></tscreen>
<item>
Je potřeba systému sdělit, že hodláte používat češtinu.  To lze
provést příkazem:   
<tscreen><code>
export LC_ALL=cs_CZ.ISO-8859-2
</code></tscreen>   
Tím počeštíte všechno pro co podpora češtiny existuje (například i názvy měsíců
v~hlášeních programů). To občas vede k~problémům s~některými skripty, které
předpokládají hlášení v~angličtině. Na tyto chyby je potřeba upozornit autora
skriptů (v~Debianu použít Bug-tracking system). Způsob opravy skriptů je
uveden v~kapitole <ref id="skripty" name="Které kategorie locales používat">.
       
Pro uživatele, kteří používají bash (který se v~Debianu instaluje
a používá implicitně, ale je možné, že někdo má nastaveno používání
jiného shellu), a kteří chtějí podporu češtiny je možné zmíněný příkaz
přidat do souboru <tt>$HOME/.bash_profile</tt>.

<item>
Můžete si nainstalovat upravenou mapu české klávesnice, která souhlasí s~mapou
používanou v~operačních systémech firem IBM a Microsoft. Soubor <tt/cz/ je
potřeba nakopírovat do adresáře <tt>/usr/X11R6/lib/X11/xkb/symbols</tt>
například příkazem: 
<tscreen><code>
cp cz /usr/X11R6/lib/X11/xkb/symbols/cz
</code></tscreen>
<item>
Některým lidem nefungoval příkaz setxkbmap, pokud v~souboru
<tt>/etc/X11/XF86Config</tt> nezapoznámkovali následující řádky (tím
že před ně přidali znak <tt>#</tt>):
<tscreen><code>
XkbRules    "xfree86"
XkbModel    "pc101"
XkbLayout   "us"
</code></tscreen>
<item>
Nyní můžete spustit XFree86. XTerm s~podporou zobrazování češtiny dostanete
například příkazem:
<tscreen><code>
xterm -fn -etl-fixed-medium-r-normal--14-140-72-72-c-70-iso8859-2 &
</code></tscreen>
Samozřejmě můžete specifikovat i jiný iso8859-2 font.

Českou klávesnici dodávanou s~XFree (není nic moc) dostanete příkazem:
<tscreen><code>
setxkbmap cs
</code></tscreen>
Českou klávesnici IBM/Microsoft (pokud jste si ji nainstalovali) dostanete
příkazem:
<tscreen><code>
setxkbmap cz
</code></tscreen>
Zpátky k~US klávesnici se lze vrátit příkazem:
<tscreen><code>
setxkbmap us
</code></tscreen>
<item>
Některé X-aplikace se chovají nekorektně a s~českou klávesnicí nepracují.
Je to chyba aplikace. Řešením je nekorektní aplikaci opravit nebo někoho
znalejšího slušně požádat o pomoc s~opravou. V~pořádku je například xterm
a Netscape Comunicator 4.05.
</itemize>

Prosím o zasílání veškerých připomínek k~popisu počeštění Debian GNU/Linuxu na
adresu Petr Špatka <htmlurl url="mailto:spatka@debian.cz" name="spatka@debian.cz">

<sect1>Red Hat 6.0

<p><sf>Petr Kolář <url url="mailto:Petr.Kolar@vslib.cz"
name="Petr.Kolar@vslib.cz">; 17.~5.~1999</sf>

<p>
Kvůli nedostatku místa na bootovacích disketách na nich není obsažena
instalace v češtině. Doufejme, že do příští verze s~tím firma Red Hat
něco udělá nebo že se podaří vytvořit obrazy disket včetně češtiny.

<p>
Do té doby je vhodné zvolit při instalaci slovenštinu, aby alespoň
věci, které vyžadují kódování ISO-8859-2 byly v~pořádku. Po provedené
instalaci změňte obsah souboru <tt>/etc/sysconfig/i18n</tt>; pokud si
přejete používat unikódové konzolové fonty, pak na:

<verb>
LANG=cs
LINGUAS=cs
LC_ALL=cs_CZ
LC_CTYPE=cs_CZ
SYSFONT=ucw16.psf
UNIMAP=latin2-ucw.uni
SYSFONTACM=latin2-ucw.scrnmap
</verb>

nebo na

<verb>
LANG=cs
LINGUAS=cs
LC_ALL=cs_CZ
LC_CTYPE=cs_CZ
SYSFONT=lat2-sun16
SYSFONTACM=iso02
</verb>

pro normální fonty. Rámečky v~programech typu mc a linuxconf by měly
být v~obou případech pořádku. Bez ohledu na použité fonty je však nutné
zabezpečit jejich aktivaci příkazem <tt>echo -e '\033(K'</tt>. Řádek
<tt>LC_CTYPE=cs_CZ</tt> je nutný pro vstup ne-ASCII znaků z~klávesnice
v~příkazových řádcích shellu tcsh, který se nechová zcela korektně.
Zároveň tento řádek umožňuje vypustit <tt>LC_ALL=cs_CZ</tt> v~případě,
že chcete sice používat české znaky, ale nemáte zájem o to, aby s~vámi
programy komunikovaly česky. Navíc pokud používá některých z~uživatelů
shell tcsh, měl by správce vytvořit soubor <tt>/etc/profile.d/lang.csh</tt>
s~tímto obsahem

<verb>
if ( -r /etc/sysconfig/i18n ) then
    eval `sed -e "s/#.*//" -e "s/^\([^=][^=]*\)=\(.*\)/setenv \1 \2;/" \
        /etc/sysconfig/i18n`
endif
</verb>

Tento skript zajistí nastavení proměnných prostředí podle obsahu souboru
<tt>/etc/sysconfig/i18n</tt>.

<p>
Výběr mapy klávesnice pro konzolu se provádí v~souboru
<tt>/etc/sysconfig/keyboard</tt>. Jeho obsah je <tt>KEYTABLE=mapa</tt>,
kde <tt>mapa</tt> je jedna z~<tt>cz-lat2</tt>, <tt>cz-lat2-prog</tt>
nebo <tt>cz-us-qwertz</tt>. Klávesnice funguje při startu jako americká,
na češtinu a zpět se přepíná klávesou <tt>Pause</tt>.

<p>
Red Hat 6.0 je dodáván s~XFree86 3.3.3.1 ve kterém již je opravena
stará chyba způsobující, že znaky áéíúý šly zadávat z~klávesnice
(nebyly-li provedeny příslušné patche) pouze pomocí mrtvých kláves.
Pokud jste prováděli upgrade a měli jste nainstalovanou knihovnu
libX11 z~balíku XKB-czsk-forcedIM (která slouží k~tomu, aby ve
starých aplikacích fungovaly mrtvé klávesy), bude použita stará
libX11 z~XKB-czsk-forcedIM (protože má vyšší číslo verze) a nepatchované
konfigurační soubory soubory, takže klávesy áéíúý opět nebudou fungovat.
Pravděpodobně je to vhodný okamžik pro odstranění XKB-czsk-forcedIM:

<tscreen><code>
rm /usr/X11R6/lib/libX11.so.6.99
ldconfig
</code></tscreen>

Pokud skutečně máte aplikace, ve kterých nefungují mrtvé klávesy
použijte knihovnu LibI18Nforce od Zdeňka Kabeláče (a nezapomeňte
napsat bug-report autorovi problémové aplikace).

<p>
Chcete-li zobrazovat české znaky v~X, musíte nainstalovat ISO-8859-2 fonty.
Fonty však nejsou okamžitě dostupné. Při implicitním použití fontserveru
je nutné doplnit odkazy na adresáře s~ISO-8859-2 následujícím patchem:

<verb>
--- /etc/X11/fs/config.orig	Mon Apr 19 01:33:12 1999
+++ /etc/X11/fs/config	Wed Apr 28 14:27:36 1999
@@ -16,7 +16,11 @@
 # directories in /usr/share, because they aren't forced to be
 # installed alongside X.
 #
-catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
+catalogue = /usr/share/fonts/ISO8859-2/misc:unscaled,
+	/usr/share/fonts/ISO8859-2/75dpi:unscaled,
+	/usr/share/fonts/ISO8859-2/100dpi:unscaled,
+	/usr/share/fonts/ISO8859-2/Type1,
+	/usr/X11R6/lib/X11/fonts/misc:unscaled,
 	/usr/X11R6/lib/X11/fonts/75dpi:unscaled,
 	/usr/X11R6/lib/X11/fonts/100dpi:unscaled,
 	/usr/X11R6/lib/X11/fonts/misc,
</verb>

<p>
Česká klávesnice v~X se nastaví jedním z~postupů popsaných v~kapitole
<ref name="Klávesnice v~X pomocí XKB" id="XKB"> a zapne klávesou
<tt>Scroll Lock</tt> nebo současným stiskem obou kláves <tt>Shift</tt>.

<p>
Informace o TeXu jsou v~kapitole <ref id="TeX" name="TeX">.

<p>
Tato kapitola není dosud dokončena. Pokud se setkáte s~dalšími problémy
podívejte se, zda jejich řešení není popsáno v~kapitole o Red Hatu 5.2.

<sect1>Red Hat 5.2

<p><sf>Rudolf Ulč <url url="mailto:rudolf.ulc@oku-st.cz"
name="rudolf.ulc@oku-st.cz">; 13.~1.~1999</sf> (upravováno autorem
Czech-HOWTO)

<p>
Podpora češtiny je v~Red Hatu 5.2 dosti pokročilá, stále však není
bez chyb.

<p>
Pokud při instalaci nebyl vybrán český jazyk, je třeba dodatečně
změnit obsah souboru <tt>/etc/sysconfig/i18n</tt> takto:

<verb>
LANG=cs
LINGUAS=cs
LC_ALL=cs_CZ
SYSFONT=lat2-16
SYSTERM=linux-lat
</verb>

<p>
pokud v~tomto souboru chcete předepsat nastavování jiných proměnných,
je nutné do souboru <tt>/etc/profile.d/lang.sh</tt> doplnit příkazy,
které zajistí jejich export; například pro proměnnou <tt>LC_CTYPE</tt>
je potřeba přidat

<tscreen><code>
if [ -n "$LC_CTYPE" ]; then
    export LC_CTYPE
fi
</code></tscreen>

<p>
Jestliže je proměnná <tt>SYSTERM</tt> nastavena na hodnotu
<tt>linux-lat</tt>, budou ve skriptu <tt>/etc/profile.d/lang.sh</tt>
automaticky nastaveny proměnné <tt>LESSCHARSET=latin1</tt> a
<tt>INPUTRC=/etc/inputrc</tt>. Soubor <tt>/etc/inputrc</tt> obsahuje
příkazy umožňující používání osmibitových znaků v~příkazových řádcích:

<verb>
set meta-flag on
set convert-meta off
set output-meta on
</verb>

<p>
Do <tt>/etc/inputrc</tt> je vhodné doplnit řádky, které zajistí fungování
kláves Home, End a Delete v~příkazovém řádku v~bashi --- podle kapitoly
<ref name="bash" id="bash">.

<p>
Aby se nastavení z~<tt>/etc/sysconfig/i18n</tt> projevilo i v~shellu tcsh,
je nutné vytvořit soubor <tt>/etc/profile.d/lang.csh</tt> obsahující

<tscreen><code>
if ( -r /etc/sysconfig/i18n ) then
    eval `sed -e "s/#.*//" -e "s/^\([^=][^=]*\)=\(.*\)/setenv \1 \2;/" \
        /etc/sysconfig/i18n`
endif
if ( "$SYSTERM" == "linux-lat" ) then
    setenv LESSCHARSET latin1
endif
</code></tscreen>
 
<p>
Pokud se při instalaci nevybere česká klávesnice, je nutné později
změnit obsah souboru <tt>/etc/sysconfig/keyboard</tt> například na

<verb>
KEYTABLE=cz-lat2
</verb>

<p>
Pro konzoli lze také použít unikódové fonty buď z~balíku <url
url="ftp://ftp.muni.cz/pub/linux/redhat/redhat-5.2/i386-cs/local/RPMS/l10n/ucw-cs-1.1-2.i386.rpm">
nebo z~<url
url="ftp://ftp.muni.cz/pub/linux/redhat/redhat-5.2/i386-cs/local/RPMS/l10n/ISO-8859-2-console-fonts-980404-1.noarch.rpm">.
V~kbd-0.96a je jinak umístěný adresář s~mapami klávesnic, než jak očekává
<tt>ucw-cs-1.1-2.i386.rpm</tt>, proto pokud máte nainstalován tento balík,
musíte vytvořit odkaz

<verb>
( cd /usr/lib/kbd/keymaps/i386; ln -s ../../keytables )
</verb>

<p>
Unikódové fonty se zavedou příkazem

<verb>
setfont ucw16 -m latin2u.scrnmap
</verb>

<p>
a je nutné přepnout tabulku fontů například příkazem

<verb>
/bin/echo -e '\033(K'
</verb>

<p>
v~<tt>/etc/profile</tt>.
Pro unikódové fonty se v~<tt>/etc/sysconfig/i18n</tt> nastavuje
<tt>SYSTERM=linux-lat</tt> (aby byly správně nastavené semigrafické
rámečky). Potom je ale nutné nastavit také <tt>INPUTRC=/etc/inputrc</tt>
a <tt>LESSCHARSET=latin1</tt>, protože toto nastavení se ve skriptu
<tt>/etc/profile.d/lang.sh</tt> provede pouze pro
<tt>SYSTERM=linux-lat</tt>. Balík
<tt>ISO-8859-2-console-fonts-980404-1.noarch.rpm</tt>, který je zabalen
pro RedHat 5.1, způsobuje ještě jeden problém na RedHat 5.2, protože
nainstaluje do <tt>/etc/rc.d/init.d</tt> soubor <tt>consolefont</tt>,
který instaluje font a mapovací tabulku podle obsahu souboru
<tt>/etc/sysconfig/consolefont</tt>. Tento mechanizmus koliduje se
záměry RedHatu 5.2. Asi nejjednodušší je nechat
v~<tt>/etc/sysconfig/i18n</tt> implicitní font <tt>lat2-16.psf</tt>
a fonty nastavovat v~souboru <tt>/etc/sysconfig/consolefont</tt> a
samozřejmě přidat do <tt>/etc/profile</tt> příkaz
<tt>/bin/echo -e '\033(K'</tt>.

<p>
Lokalizace správců oken fvwm95 a Afterstep i programů pine, mutt,
lynx, emacs, joe, groff, applixware a dalších pro používání znakové
sady ISO-8859-2 a české klávesnice je popsána v~podkapitolách
<ref name="fvwm95" id="fvwm95">, <ref name="afterstep" id="afterstep">,
<ref name="pine" id="pine">, <ref name="mutt" id="mutt">,
<ref name="lynx" id="lynx">,
<ref name="joe" id="joe">, <ref name="groff" id="groff">,
<ref name="applixware" id="applixware"> kapitoly
<ref name="Lokalizace různých aplikací" id="programy">.

<p>
Uživatelské soubory jako <tt>.inputrc</tt>, <tt>.muttrc</tt>, které mají
být kopírovány všem uživatelům vytvářeným příkazem useradd je třeba umístit
do adresáře <tt>/etc/skel</tt>.

<p>
Pro zprovoznění české klávesnice v~X Window Systemu je potřeba doplnit do
souboru <tt>/usr/X11R6/lib/X11/locale/locale.alias</tt> chybějící řádek

<verb>
cs_CZ                   cs_CZ.ISO8859-2
</verb>

<p>
(velká mezera je tvořena tabelátory) a příkazem

<tscreen><code>
setxkbmap -symbols 'czsk(us_cz_prog)' -compat group_led
</code></tscreen>

<p>
aktivovat zvolenou klávesnici. "Automatické" provedení tohoto příkazu
při spuštění X se zajistí jeho uvedením v~souborech
<tt>$HOME/.Xclients</tt> jednotlivých uživatelů. Nastavení klávesnice
lze provést pro všechny uživatele najednou v~sekci Keyboard v~souboru
<tt>/etc/X11/XF86Config</tt>.

<p>
Terminálový emulátor rxvt v~Red Hatu 5.2 je částečně opraven, ale zdá se,
že problémy s~mrtvými klávesami přetrvávají. Měl by fungovat s~balíkem
XKB-czsk-forcedIM a s~nastavenou proměnnou prostředí
<verb>XLIB_FORCE_I18N=1</verb>. V~terminálovém
emulátoru nxterm česká klávesnice dosud nefunguje; proto je nutné při
použití Afterstepu v~souboru
<tt>/usr/share/afterstep/fixed/start/1_xterm</tt> změnit
<tt>nxterm</tt> na <tt>xterm</tt>.

<p>
Také program netscape umožňuje zadávat české znaky z~klávesnice. Umí také
správně zobrazovat WWW stránky v~kódování ISO-8859-2 i Windows-1250, bohužel
ve formulářích stále nesprávně používá vždy pouze ISO-8859-1 fonty.

<p>
Aby program xterm, emacs a další používaly ISO-8859-2 fonty, je nutné
je spouštět například s~parametrem
<tt>-fn -misc-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-2</tt>.
Lepší je ale vyrobit soubor <tt>$HOME/.Xresources</tt> obsahující

<verb>
*fontMenu.Label:  VT Fonts (8859-2)
*fontMenu.fontdefault.Label: default (8x16)
*vt100.font: -misc-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-2
*vt100.boldfont: -misc-fixed-bold-r-normal-sans-16-150-75-75-c-90-iso8859-2
*fontMenu.font1.Label: 5x7
*vt100.font1: -misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-2
*fontMenu.font2.Label: 7x13
*vt100.font2: -misc-fixed-medium-r-normal-sans-13-120-75-75-c-70-iso8859-2
*vt100.boldfont2: -misc-fixed-bold-r-normal-sans-13-120-75-75-c-70-iso8859-2
*fontMenu.font3.Label: 8x14
*vt100.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-80-iso8859-2
*vt100.boldfont3: -misc-fixed-bold-r-normal--13-120-75-75-c-80-iso8859-2
*fontMenu.font4.Label: 8x14 bold
*vt100.font4: -misc-fixed-bold-r-normal--13-120-75-75-c-80-iso8859-2
*fontMenu.font5.Label: 10x20
*vt100.font5: -misc-fixed-medium-r-normal-sans-20-200-75-75-c-100-iso8859-2
*fontMenu.font6.Label: 14x26
*vt100.font6: -misc-fixed-medium-r-normal-serif-26-170-75-75-c-140-iso8859-2

xterm*VT100.Translations: #override\n\
        <Key>BackSpace: string(0x7F)\n\
        <Key>Insert: string("^[[2~")\n\
        <Key>Delete: string("^[[3~")\n\
        <KeyPress>Prior : scroll-back(1,page)\n\
        <KeyPress>Next : scroll-forw(1,page)
nxterm*VT100.Translations: #override\n\
        <KeyPress>Prior : scroll-back(1,page)\n\
        <KeyPress>Next : scroll-forw(1,page)

rxvt*font: -misc-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-2
rxvt*boldfont: -misc-fixed-bold-r-normal--16-150-75-75-c-90-iso8859-2

emacs*font: -misc-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-2
</verb>

<p>
Uvedený obsah zajistí také fungování kláves Backspace, Delete
a Insert a nastavení fontu pro rxvt a Emacs.

<p>
Pokud vám při zapnuté češtině vadí rozházený výpis příkazu
<tt>ls -l</tt>, použijte postup popsaný v~kapitole
<ref id="zkratkymesicu" name="instalace locales">. 

<sect2>Manuálové stránky

<p>
České manuálové stránky jsou obsaženy v~balíku
<url url="ftp://ftp.fi.muni.cz/pub/localization/linux/czman/man-pages-cs-0.12-1.noarch.rpm">.
Pro jejich prohlížení je vhodné mít nainstalován balík
<tt>groff-latin2-1.1-1.noarch.rpm</tt> a v~souboru
<tt>/etc/man.config</tt> nahradit <tt>-Tascii</tt> za
<tt>-Tlatin2</tt>. Nicméně prakticky se lze obejít i bez
groff-latin2 a v~souboru <tt>/etc/man.config</tt> nahradit
<tt>-Tascii</tt> za <tt>-Tlatin1</tt>. Tisk manuálových stránek a výstupu
z~programu groff na postscriptové tiskárny dosud není vyřešen.

<sect2>Emacs

<p>
5.2 je první verze Red Hatu, ve které je Emacs s~podporou MULE. Podpora
češtiny je obsažena v~balíku
<url url="ftp://ftp.muni.cz/pub/localization/emacs/redhat/RPMS/noarch/emacs-cs-utils-4.2-4.noarch.rpm">.

<p>
Další nastavení se provede podle popisu
v~<tt>/usr/doc/emacs-cs-utils-4.2/emacs-czech.html</tt>.

<sect2>Tisk na tiskárnách s~vestavěnými českými fonty<label id="tisktext">

<p>
Pro tisk textových souborů v~kódování ISO-8859-2 na tiskárnách
s~vestavěnými českými fonty s~jiným kódováním (například CP-852)
v~textovém režimu je nutné doplnit soubor
<tt>/usr/lib/rhs/rhs-pritntfilterd/asc-to-printer.fpi</tt>
o příkaz <tt>cstocs il2 kód</tt>, kde <tt>kód</tt> je jméno souboru
s~definicí kódování znaků použitých danou tiskárnou. Balík cstocs
obsahuje definiční soubory pro nejrozšířenější kódování; formát definičních
souborů je jednoduchý, takže pokud
tiskárna používá exotické kódování, lze jeho popis pro program
cstocs snadno doplnit.

<p>
Jestliže například má tiskárna vestavěnou znakovou sadu CP852, bude
na místě parametru <tt>kód</tt> použito <tt>pc2</tt> takto:

<verb>
if [ "$CRLFTRANS" = YES -o "$CRLFTRANS" = 1 ]; then
    cstocs il2 pc2 | sed -e 's/$/'`echo -ne '\r'`'/g'
else
    cstocs il2 pc2 | cat -
fi
</verb>

<p>
Poznámky:

<itemize>
<item>Příkaz <tt>cat -</tt> lze vynechat.
<item>Musí být nainstalován balík cstocs.
</itemize>

<sect2>Midnight Commander

<p>
Je třeba nastavit podporu osmibitových znaků: v~menu
<tt>Options -> Display bits</tt> zaškrtnout
<tt>Full 8 bits output</tt> a <tt>Full 8 bits input</tt> a
uložit nastavení. Dále je třeba nastavit barevný terminál -
do souboru <tt>$HOME/.mc/ini</tt> (případně do
<tt>/usr/lib/mc/mc.ini</tt>) přidáme:

<verb>
[Colors]
color_terminals=linux,linux-lat,xterm
</verb>

<p>
Pro prohlížení českých manuálových stránek v~mc je potřeba v~menu
<tt>Command -> Extension file edit</tt> (nebo v~souboru
<tt>/usr/lib/mc/mc.ext</tt>) v~sekcích <tt># Manual page</tt>
a <tt># Manual page - compressed</tt> zaměnit <tt>nroff</tt> za
<tt>groff</tt> a <tt>-Tascii</tt> za <tt>-Tlatin2</tt>.
Musí být nainstalován český groff.

<sect2>Další úpravy nesouvisející s~lokalizací

<p>
Kvůli chybě v~balíku mc-4.1.35-2 nefunguje prohlížení rpm souborů.
V~<tt>/usr/lib/mc/extfs/rpm</tt> na řádku 100 má být:

<verb>
rpm -qlvp $1 | sed -e 's/^\(..........\)[-t]/\1 1 /;s/    /  1 /'
</verb>

Dále je užitečné upravit soubor <tt>/usr/lib/mc/mc.ext</tt> popisující
vazby souborů obrázků s~programy. Například pro soubory typu JPEG takto:

<verb>
type/JPEG\ image
Open=if [ -n "$DISPLAY" ]; then zgv %f; else (ee %f &); fi
Icon=jpeg.xpm
Include=image-options
</verb>

Tak se v~případě spuštění mc na konzoli použije prohlížeč obrázků zgv
a v~X Windows se použije prohlížeč ee. Podobně lze doplnit například
pro midi a mp3:

<verb>
regex/\.(mid|MID)$
    Open=playmidi -a %f
    Icon=sound.xpm
</verb>

<p>
(parametr <tt>-a</tt> je pouze pro Sound Blaster AWE 32, jinak není
potřebný).

<p>
Do souboru <tt>/etc/rc.d/rc.local</tt> je vhodné přidat nastavení
NumLocku a Powersave pro monitor:

<tscreen><code>
# Set Numlock
for tty in /dev/tty[1-6]; do
      setleds -D +num < $tty
done

# Set power save
setterm -blank 10 -powersave on
printf "\033[14;5]"
</code></tscreen>

<p>
Zkontrolujte případně nastavte práva pro zařízení CD-ROM (všichni právo
<tt>r</tt>) a sequencer (všichni právo <tt>w</tt>), aby mohli všichni
uživatelé přehrávat CD a midi soubory:

<tscreen><code>
chmod o+r /dev/hdx       (tam, kde je cdrom)
chmod o+w /dev/sequencer
</code></tscreen>

<sect1>Red Hat 5.1

<p><sf>Rudolf Ulč <url url="mailto:rudolf.ulc@oku-st.cz"
name="rudolf.ulc@oku-st.cz">; 9.~9.~1998</sf>

<p>
Red Hat 5.1 obsahuje částečnou podporu češtiny. Lokalizace však není
zdaleka dotažena do konce a jsou v~ní chyby. Kromě úprav uvedených výše
pro RedHat 5.2 je nutné ještě provést tyto kroky:

<sect2>Úprava locales

<p>
Katalogy programů mají být v~<tt>/usr/share/locale/cs/LC_MESSAGES</tt>,
lokalizační soubory pro knihovnu glibc v~adresáři
<tt>/usr/share/locale/cs_CZ</tt>:

<tscreen><code>
cd /usr/share/locale
mv cz/LC_MESSAGES/* cs/LC_MESSAGES
mv cs_CZ/LC_MESSAGES/*.mo cs/LC_MESSAGES
rm -r cz
ln -s cs cz
</code></tscreen>

<p>
Symbolický odkaz <tt>cz</tt> se vyrábí proto, aby se české katalogy
zpráv rozumně umístily i při dodatečné instalaci balíků, které se je
nesprávně snaží umístit do~adresáře <tt>cz</tt>.

<sect2>Nastavení locales a fontů a klávesnice na konzoli

<p>
Obsah souboru <tt>/etc/sysconfig/i18n</tt>, který po instalaci, při níž
byl vybrán český jazyk, vypadá takto:

<verb>
LANG=cz
LINGUAS=cz
SYSFONT=lat2-16
SYSTERM=linux-lat
</verb>

<p>
je třeba změnit na

<verb>
LANG=cs
LINGUAS=cs cz
LC_ALL=cs_CZ
SYSFONT=lat2-16
SYSTERM=linux-lat
</verb>

<p>
Soubor <tt>/etc/sysconfig/keyboard</tt> slouží pro zadání mapy klávesnice,
která se má použít na konzoli. Jméno mapy klávesnice musí být bez přípony
<tt>.gz</tt> a může být i bez přípony <tt>.map</tt> a bez cesty
(pak nebude vadit, že V RedHat 5.2 nejsou mapy klávesnic
v~<tt>/usr/lib/kbd/keytables</tt>, ale
v~<tt>/usr/lib/kbd/keymaps/i386</tt>. Pro češtinu by měl soubor
<tt>/etc/sysconfig/keyboard</tt> obsahovat jeden ze řádků

<verb>
KEYTABLE="cz-lat2"
KEYTABLE="cz-lat2-prog"
</verb>

<p>
Nebyla-li při instalaci zvolena čeština, stačí pouze opravit
zmíněné dva soubory.

<p>
Obsah souboru <tt>/etc/sysconfig/i18n</tt> zajistí, že na konzoli
budou nastaveny ISO-8859-2 fonty a díky nastavení klávesnicové mapy
z~<tt>/etc/sysconfig/keyboard</tt> lze stisknutím klávesy Pause
přepínat na českou klávesnici. Aby bylo možné používat ne-ASCII znaky
i v~příkazových řádcích shellu bash, je nutné vytvořit soubor
<tt>$HOME/.inputrc</tt> jak je popsáno v~kapitole <ref id="bash">.

<p>
Podle hodnoty <tt>SYSTERM</tt> je automaticky nastavena proměnná
prostředí <tt>TERM</tt> na hodnotu <tt>linux-lat</tt>, pro kterou
je upravena databáze termcap a terminfo, takže v~mc fungují rámečky
tak, jako když se dříve použily upravené soubory termcap a linux.ti
z~Linux CZ Desktop. Bohužel to není uděláno asi úplně stejně, protože
např. přehrávač CD cdp má některé znaky rámečků špatně (jsou potřebné
pro iso8859-1?). 

<p>
Pokud se rozhodnete používat unikódové fonty z~balíku
<url url="ftp://ftp.fi.muni.cz/pub/linux/distributions/redhat/redhat-5.1/i386-cs/local/RPMS/l10n/ucw-cs-1.1-2.i386.rpm" name="ucw">,
je nutné v~souboru <tt>/etc/sysconfig/i18n</tt> nastavit
<tt>SYSTERM=linux</tt>.
Dále je nutné nastavit mapovací unikódovou tabulku pomocí příkazu
mapscrnuni a přepnout na uživatelské mapování escape sekvencí,
jak je popsáno v~návodu od ucw. S~nastavením <tt>SYSTERM=linux</tt>

<p>
Pokud někomu nevyhovuje česká klávesnice z~balíku ucw, je možné
kombinovat klávesnicové mapy <tt>cz-lat2.map</tt> nebo
<tt>cz-lat2-prog.map</tt> ze základní distribuce s~unikódovými
českými fonty z~ucw.

<sect2>Klávesnice v~X

<p>
Nejsnazší způsob jak zprovoznit klávesnici v~X v~Red Hat 5.1 je provést
upgrade všech použitých balíků XFree86 na poslední verzi (minimálně na
verzi 3.3.2.3-25). Staré verze XFree86 neobsahují české klávesnicové
mapy, zato obsahují množství bezpečnostních děr, takže upgrade je
vhodný už z~důvodu bezpečnosti. I po provedení upgrade je nutné upravit
soubor <tt>/usr/X11R6/lib/X11/locale/locale.alias</tt>, aby obsahoval řádky:

<verb>
cs_CZ                   cs_CZ.ISO8859-2
czech                   cs_CZ.ISO8859-2
</verb>

<p>
První uvedený řádek je zapotřebí do souboru přidat, druhý zkontrolovat
a případně změnit. Klávesnice každopádně vyžaduje fungující locales.

<p>
Nechcete-li upgradovat XFree86, musíte navíc někde sehnat české mapy
klávesnice. Jednou z~možností je použít balík XKB-czsk-forcedIM-0.04.
Soubor <tt>/etc/X11/XF86Config</tt> není nutné upravovat (jak je popsáno
v~dokumentaci k~balíku), stačí pouze přepnout na zvolenou klávesnici
příkazem

<tscreen><code>
setxkbmap -symbols 'czsk(us_cz_prog)' -compat group_led
</code></tscreen>

<p>
- pro "automatické" přepnutí lze umístit tento příkaz do souboru
<tt>$HOME/.Xclients</tt>.

<p>
Pokud uděláte update/upgrade XFree86 a chcete i nadále používat balík
XKB-czsk-forcedIM-0.04-1.i386.rpm, je nutné ho nainstalovat znovu
(s~parametrem <tt>--force</tt>).

<sect2>Fonty v~X

<p>
Je třeba nainstalovat balíky

<verb>
ISO-8859-2-X11-fonts-100dpi-970301biznet-5.i386.rpm
ISO-8859-2-X11-fonts-75dpi-970301biznet-5.i386.rpm
ISO-8859-2-X11-fonts-basic-970301biznet-5.i386.rpm
</verb>

z~<url url="ftp://ftp.fi.muni.cz/pub/linux/distributions/redhat/redhat-5.1/i386-cs/local/localization/"> a

<verb>
X11fonts-ulT1mo-beta-1.0-3.noarch.rpm
</verb>

<p>
z~<url url="ftp://ftp.fi.muni.cz/pub/linux/distributions/redhat/redhat-5.1/i386-cs/local/RPMS/l10n/">
a přidat řádky

<verb>
    FontPath    "/usr/X11R6/lib/X11/fonts/ISO-8859-2/misc/"
    FontPath    "/usr/X11R6/lib/X11/fonts/iso8859-2/Type1/"
    FontPath    "/usr/X11R6/lib/X11/fonts/ISO-8859-2/75dpi/"
    FontPath    "/usr/X11R6/lib/X11/fonts/ISO-8859-2/100dpi/"
</verb>

do <tt>/etc/X11/XF86Config</tt> bezprostředně před ostatní řádky
<tt>FontPath</tt>.

<sect2>Emacs

<p>
Emacs je v~Red Hatu do verze 5.1 kompilován bez podporu MULE,
takže jej není možné počeštit. Proto je nutné použít buď Emacs
z~Red Hatu 5.2 nebo balík emacs-20.6-cs Jaroslava Honsy
<url url="ftp://ftp.fi.muni.cz/pub/localization/emacs/emacs-20/rpm/">.
A případně novější verze utilit v~souboru emacs-cs-utils-4.1.tgz.
Vytvoříme soubor <tt>/usr/share/emacs/20.2/lisp/term/linux-lat.el</tt>
(pro <tt>TERM=linux-lat</tt>) zkopírováním souboru <tt>linux.el</tt>
s~obsahem:

<verb>
(set-terminal-coding-system 'iso-latin-2)
</verb>

a soubor <tt>$HOME/.emacs</tt> s~obsahem:

<verb>
(standard-display-european t)
(set-input-mode (car (current-input-mode))
            (nth 1 (current-input-mode))
                0)
</verb>

<p>
Soubor potom zkopírujeme do adresáře <tt>/etc/skel</tt>.

<p>
Při provozování Emacsu pod X je třeba jedním z~postupů, které jsou
popsány výše, zajistit, že Emacs použije ISO-8859-2 font.

<sect2>Další úpravy

<p>
Pro programy lynx, pine a mutt je třeba vytvořit konfigurační soubory
jak je popsáno v~kapitolách <ref name="lynx" id="lynx">,
<ref name="pine" id="pine"> a <ref name="mutt" id="mutt">.
Časem by měl být k~dispozici balíček, který bude potřebné konfigurační
soubory obsahovat.

<p>
Pro převody mezi různými kódováními textových souborů je třeba nainstalovat
balík <tt>cstocs-3.0-1.i386.rpm</tt>.

<p>
Většinu zmíněných balíků lze získat na
z~<url url="ftp://ftp.fi.muni.cz/pub/linux/distributions/redhat/redhat-5.1/i386-cs/local/RPMS/">
a
<url url="ftp://ftp.fi.muni.cz/pub/linux/distributions/redhat/redhat-5.1/i386-cs/local/localization/">.

<sect>Odkazy na odkazy

<p>
<itemize>
<item><url url="http://www.cestina.cz"> --- stránky věnované technickým otázkám
používání češtiny na počítačích
<item><url url="http://www.agh.edu.pl/ogonki/"> --- "Polska strona ogonkowa"
    (v~polštině)
<item><url url="http://sizif.mf.uni-lj.si/linux/cee/iso8859-2.html"> --- výklad
k~ISO-8859-2 fontům (anglicky)
<item><url url="http://www-inf.enst.fr/~demaille/a2ps/"> --- Domovská stránka
programu a2ps.
<item><url url="http://www.dcs.ed.ac.uk/home/jec/programs/ogonkify/"> -
domovská stránka programu <tt>ogonkify</tt>, který slouží k~přidávání
kompozitních znaků do Postscriptových fontů.
<item><url url="http://www.ngs.fi/mtr/genscript/"> --- domovská stránka programu
pro konverzi ASCII souborů na PostScript.
<item><url url="http://czyborra.com"> --- domovská stránka Romana Czyborry
obsahující informace o nejrůznějších kódování včetně ISO-8859-x.
</itemize>

<sect>Jak se zapojit do počešťování a tvorby tohoto HOWTO

<sect1>Počešťování

<p>
Informace o jednotlivých projektech, které souvisejí s~lokalizací, jsou
na serveru <url url="http://czlinux.freesoft.cz">. Relativně nejvíce práce
je na lokalizaci jednotlivých programových balíků do češtiny. Jejich seznam
naleznete na stránce <url url="http://www.inf.upol.cz/~michlv/gnu-loc.shtml">. 

<p>
Pro lokalizaci distribuce Debian existuje poštovní konference
<url url="mailto:czdebian-l@debian.cz" name="czdebian-l@debian.cz">.
Informace o přihlášení do konference lze získat zasláním e-dopisu,
jehož tělo bude obsahovat <tt>help</tt>, na adresu
<url url="mailto:czdebian-l-request@debian.cz" name="czdebian-l-request@debian.cz">.

<p>
Pro lokalizaci distribuce Red Hat existuje konference 
<url url="mailto:redhat-cz@linux.cz" name="redhat-cz@linux.cz">.
Informace o konferenci lze získat zasláním e-dopisu na adresu
<url url="mailto:redhat-cz-help@linux.cz" name="redhat-cz-help@linux.cz">.
Pro přihlášení do konference použijte stejný postup, pouze v~adrese změňte
<tt>redhat-cz-help</tt> na <tt>redhat-cz-subscribe</tt>.

<sect1>Czech HOWTO

<p>
Toto HOWTO vzniklo jako iniciativa několika lidí v~konferenci
<tt>linux@linux.cz</tt>. Máte-li chuť přispět, neváhejte. Vítány
jsou zcela nové příspěvky, doplňky, upozornění na chyby faktické i
pravopisné a gramatické. Můžete dát také vědět, co v~HOWTO postrádáte.

Nové příspěvky, stejně jako upozornění na nedostatky v~textu
zasílejte koordinátorovi tvorby HOWTO (viz kapitola
<ref id="koordinace" name="Koordinace">. S~odbornějšími problémy se
můžete obrátit též na autory uvedené v~záhlaví jednotlivých kapitol.

HOWTO je napsáno v~Linuxdoc~SGML. Příspěvky jsou přijímány v~tomto
formátu nebo jako jednoduchý text. Hledá se dobrovolník, který napíše
stručný návod, jak Linuxdoc~SGML pro tvorbu tohoto HOWTO používat.

Při psaní nových příspěvků je vhodné dodržovat následující pravidla:
<itemize>
<item>
Předpokládáte-li, že napsání příspěvku vám zabere více než deset
minut, nechte si jej nejprve přiklepnout od koordinátora. Je většinou
zbytečné psát něco dvakrát.
<item>
Snažte se být struční a výstižní. Uvědomte si, že většina lidí nerada
čte dlouhé dokumenty. Když už někdo podobný dokument čte, dělá to
z~nutnosti a ne pro své pobavení. Usnadněte mu tuto práci co nejvíce.
<item>
FTP, WWW a e-mailové adresy uvádějte jako URL. U~všech uváděných adres
pokud možno prověřte jejich existenci.
<item>
Používejte znak <tt/&tilde;/ v~místech nezlomitelných mezer
(tam, kde má být v~textu skutečně vypsán znak vlnka, je nutné použít
<tt>&amp;tilde;</tt>).
<item>
Dodržujte pokud možno terminologii v~duchu již existujících částí
tohoto HOWTO, není-li vám tato příliš proti srsti.
<item>
Jedná se o~české HOWTO, snažte se proto v~rozumné míře používat české
tvary odborných výrazů. Preferováno je "jádro" před "kernel", "stisk
klávesy" před "keystroke"; naopak asi není příliš vhodné používat
termínů jako "slabika" místo "byte", příp. "bajt". Každopádně zcela
nevhodné je míchat v~jednom textu obě varianty ("kernel" i "jádro").
<item>
Výsledný text si po sobě důkladně přečtěte. Uvědomte si, že jej po
vás bude číst mnoho lidí.
</itemize>

<sect2>Důležité upozornění

<p>
Zasláním svého příspěvku implicitně souhlasíte s~tím, že:
<itemize>
<item>
na váš příspěvek se v~rámci Czech HOWTO vztahují podmínky GNU General
Public License;
<item>
vaše jméno a e-mailová adresa bude zveřejněna v~dokumentu HOWTO s~uvedením
sekcí, na jejichž tvorbě jste se významným dílem podílel(a).
</itemize>

První podmínka je bez výjimky závazná. V~případě druhé podmínky je
možné na explicitní žádost autora učinit výjimku.

<sect>O~Czech HOWTO

<sect1>Aktuální verze

<p>
Czech-HOWTO je postupně doplňováno a opravováno. Informace o nových
verzích jsou zasílány do mailing listu <tt>linux@linux.cz</tt>
na <tt>linux-info@linux.cz</tt>, který je obousměrně propojen s~newsovou
skupinou <tt>cz.comp.linux</tt>.

<sect1>Koordinace<label id="koordinace">

<p>
Koordinaci tvorby HOWTO v~současné době provádí Petr Kolář
<url url="mailto:Petr.Kolar@vslib.cz" name="Petr.Kolar@vslib.cz">.
Na jeho adresu se lze obracet s~veškerými příspěvky a připomínkami.

<sect>Autoři<label id="lide">

<p>
Na tvorbě tohoto HOWTO se podíleli tito lidé (v~abecedním pořadí):

<descrip>
<tag>Jan Derfiňák <url url="mailto:ja@demax.sk" name="ja@demax.sk"></tag>
Applixware
<tag>Radim Halíř <url url="mailto:halir@ms.mff.cuni.cz"
name="halir@ms.mff.cuni.cz"></tag>
rxvt
<tag>Michal Choura <url url= "mailto:xchoura@cs.felk.cvut.cz"
name="xchoura@cs.felk.cvut.cz"></tag>
TeX
<tag>Pavel Janík ml. <url url="mailto:Pavel.Janik@math.muni.cz"
name="Pavel.Janik@math.muni.cz"></tag>
linuxová konzola, bash, joe, české manuálové stránky, ispell
<tag>Petr Kolář <url url="mailto:Petr.Kolar@vslib.cz"
name="Petr.Kolar@vslib.cz"></tag>koordinace tvorby, cíle lokalizace,
lokalizace X, locales, less, lynx, tisk, redakce dalších částí
<tag>Vladimír Michl <url url="mailto:michlv@risc.upol.cz"
name="michlv@risc.upol.cz"></tag>
počešťování konzolových aplikací, locales
<tag>Jan Pazdziora <url url="mailto:adelton@fi.muni.cz"
name="adelton@fi.muni.cz"></tag>
české třídění, cstocs, MySQL.
<tag>Vítězslav Samel <url url="mailto:xsamel00@dcse.fee.vutbr.cz"
name="xsamel00@dcse.fee.vutbr.cz"></tag>
Less, MC (část), Debian
<tag>Petr Špatka <url url="mailto:xspatk00@stud.fee.vutbr.cz"
name="xspatk00@stud.fee.vutbr.cz"></tag>
Debian
<tag>Petr Staněk 'Šnek' <url url="mailto:snek@penguin.cz"
name="snek@penguin.cz"></tag>
fvwm95, Midnight Commander (část)
<tag>Arnošt Štědrý <url url= "mailto:arnost@uivt.cas.cz"
name="arnost@uivt.cas.cz"></tag>
TeX
<tag>Rudolf Ulč <url url="mailto:rudolf.ulc@oku-st.cz"
name="rudolf.ulc@oku-st.cz"></tag>
Red Hat 5.1 a 5.2
<tag>Milan Zamazal <url url="mailto:pdm@fi.muni.cz"
name="pdm@fi.muni.cz"></tag>
koordinace a základní podoba HOWTO, Emacs, Debian, ispell
</descrip>

</article>

<!--
$Id: Czech-HOWTO.sgml,v 1.29 1999/05/18 01:04:37 kolar Exp $
Local variables:
mode: sgml
sgml-local-catalogs: ("/usr/lib/sgml-tools/dtd/catalog")
sgml-public-map: ("/usr/lib/sgml-tools/dtd/%n.%y")
sgml-validate-command: "sgmlcheck Czech-HOWTO.sgml"
fill-column: 72
End:
-->
