# Slovak-HOWTO

Ján
'judas'
Tomka
verzia 4 (Blanka)
19. február 2002
Slovakia
Slovensko
sloven&ccaron;ina
keyboard
klávesnica
kbd
font
písmo
console
konzola
GNU
Linux

Tento dokument poskytuje informácie týkajúce sa problematiky miestnych nastavení v prostredí opera&ccaron;ných systémov GNU/Linux s oh&lcaron;adom na potreby slovenského u&zcaron;ívate&lcaron;a.

## Úvodné informácie

### Licencia

Áno, mô&zcaron;ete &ccaron;íta&tcaron; tento dokument, a to aj na komer&ccaron;né u&ccaron;ely!

Autori nenesú zodpovednos&tcaron; za materiálnu &ccaron;i psychickú ujmu spôsobenú &ccaron;itate&lcaron;ovi, jeho rodinným príslušníkom, domácim a hospodárskym zvieratám, prípadne po&ccaron;íta&ccaron;ovému zariadeniu.

Toto je free dokument --- mô&zcaron;ete ho šíri&tcaron; a/alebo modifikova&tcaron; v súlade s podmienkami licencie GNU Free Documentation Licence, ktorej znenie nájdete na adrese http://www.gnu.org/licenses/fdl.html.

### Aktuálna verzia a prispievanie

Ak nájdete v tomto súbore nie&ccaron;o, &ccaron;o je nezlú&ccaron;ite&lcaron;né s vašim linuxovým presved&ccaron;ením, napíšte najskôr do diskusie linux, potom sk-i18n, dajte príspevok na www.linux.sk a poohovárajte ma na &num;sklug. V prípade, &zcaron;e vás to neprejde, skontrolujte, &ccaron;i máte aktuálnu verziu a, samozrejme, a&zcaron; nakoniec, dajte mi vedie&tcaron;. Adresy sú:

- Aktuálna verzia: http://www.linuxdoc.org/HOWTO/Slovak-HOWTO/index.html

- Priania, s&tcaron;a&zcaron;nosti a ponuky na sobáš: judas@linux.sk

Na túto adresu sa tie&zcaron; obracajte, ak máte nie&ccaron;o, &ccaron;o by nemalo chýba&tcaron; v Slovak-HOWTO.

Nadácia Pomô&zcaron; a skonaj prispela na dopísanie &ccaron;asti o klávesnici v iXoch sama sebe &ccaron;iastkou 500 000,- Sk, v televízii Pomô&zcaron; a skonaj i v rovnomennom &ccaron;asopise boli zverejnené inzeráty, politická strana PAS nekompromisne trvá na kompromise a všetci pijú minerálku Pomô&zcaron; a skonaj. Tigre, nosoro&zcaron;ce a lú&ccaron;ne koníky boli pokrstené, a predsa sa s kapitolou o klávesnici v iXoch ni&ccaron; nedeje. Mimochodom, sme naj&ccaron;ítanejšie Slovak-HOWTO na svete!

Pri prispievaní sa skúste riadi&tcaron; nasledovnými pravidlami:

- Pre tých, ktorí majú vá&zcaron;ny záujem podie&lcaron;a&tcaron; sa na písaní Slovak-HOWTO, je mo&zcaron;ný CVS prístup priamo k zdrojovým kódom dokumentu na serveri cvs.linuxdoc.org v adresári `/cvsroot/LDP/howto/docbook/Slovak-HOWTO/`. Bli&zcaron;šie informácie o získaní CVS konta a webovskom rozhraní k CVS serveru nájdete v LDP Autor Guide.

- Opravy robte v&zcaron;dy vo formáte SGML (DTD DocBook, verzia 4.0), ktorý je primárnym formátom pri tvorbe tohto dokumentu. Je tie&zcaron; mo&zcaron;né posiela&tcaron; &ccaron;istý text. Príspevky píšte, pokia&lcaron; mo&zcaron;no, s diakritikou v norme ISO-8859-2.

- Ak je to nie&ccaron;o vä&ccaron;šie, dajte mi najskôr vedie&tcaron;, &ccaron;o chystáte, preto&zcaron;e je mo&zcaron;né, &zcaron;e u&zcaron; na tom niekto maká a teda bu&dcaron; na to zabudnete, alebo to skúsite dorobi&tcaron; s danou osobou. (Vzh&lcaron;adom na to, &zcaron;e zatia&lcaron; sa do tohto dokumentu dostalo asi 20 riadkov cudzieho textu, zdá sa mi predchádzajúca veta maximálne smiešna. Ha-ha, zasmial som sa...)

- Vaše meno a adresa budú automaticky zverejnené spolu s vašim príspevkom. Ak si to ne&zcaron;eláte, musíte o to výslovne po&zcaron;iada&tcaron;. Takisto, autor príspevku u&zcaron; jeho zaslaním implicitne súhlasí s aplikáciou licencie tohto dokumentu na &ccaron;as&tcaron;, ktorej je autorom.

- V Czech-HOWTO sa hovorí: Kdy&zcaron; u&zcaron; n&ecaron;kdo podobný dokument &ccaron;te, d&ecaron;lá to z nutnosti a ne pro své pobavení. Musíme však zobra&tcaron; do úvahy, &zcaron;e v &Ccaron;echách je vyššia &zcaron;ivotná úrove&ncaron; a oni a&zcaron; to&lcaron;ko srandy nepotrebujú...

### Osoby a obsadenie

Mená autorov návodov na lokalizáciu konkrétnych aplikácií sa nachádzajú priamo v kapitole , prípadne .

- Ján'judas' Tomka -- Zodpovedný vedúci.

- Ján Ondrej (SAL) -- Autor pôvodného Slovak-HOWTO.

- &Lcaron;ubomír'salo' Sedlá&ccaron;ik -- ksh/csh/tcsh, grammar bugfixes.

## Miestne nastavenia

### Princípy miestnych nastavení

Podpora miestnych nastavení je dnes mimoriadne dôle&zcaron;itým faktorom, ktorý charakterizuje jednotlivé opera&ccaron;né systémy. &Ccaron;asy, ke&dcaron; boli &lcaron;udia štastní, &zcaron;e to nie&ccaron;o píše, sú nenávratne pre&ccaron; a pou&zcaron;ívatelia vy&zcaron;adujú podporu svojich miestnych nastavení. V GNU systémoch je táto podpora implementovaná priamo do štandardnej kni&zcaron;nice jazyka C -- GNU libc. Táto podpora je navrhnutá tak, aby zoh&lcaron;ad&ncaron;ovala všetky po&zcaron;iadavky kladené na nastavenia pre akúko&lcaron;vek krajinu a akýko&lcaron;vek jazyk.

#### Ciele a prostriedky

Rôzne krajiny a kultúry majú odlišné pravidlá komunikácie. Tieto pravidlá mô&zcaron;u by&tcaron; malého rozsahu, napr. formát dátumu a &ccaron;asu, a&zcaron; po ve&lcaron;mi koplexné ako je jazyk, ktorým hovoria.

Internacionalizácia softvéru znamená programova&tcaron; ho tak, aby bol schopný pracova&tcaron; s pou&zcaron;ivate&lcaron;ovými miestnymi nastaveniami. V ISO C pracuje internacionalizácia v zmysle locales. Ka&zcaron;dé locale (miestne nastavenia) špecifikuje skupinu pravidiel, jedno pravidlo pre ka&zcaron;dý u&ccaron;el. U&zcaron;ívate&lcaron; si zvolí skupinu pravidiel špecifikovaním locale (pomocou systémových premenných).

Všetky programy dedia nastavené locale v rámci ich prostredia. Pod podmienkou, &zcaron;e programy sú napísané tak, &zcaron;e akceptujú nastavené locales, mô&zcaron;u sa riadi&tcaron; pravidlami, ktoré uprednost&ncaron;uje pou&zcaron;ívate&lcaron;.

#### Kategórie a ich funkcie

Táto &ccaron;as&tcaron; popisuje jednotlivé premenné, ktoré ovplyv&ncaron;ujú miestne nastavenia a ktorými sa riadia aj funkcie kni&zcaron;nice GNU libc.

Nastavenie premennej prostredia sa robí pomocou príkazu shellu

    bash$ export LC_PREMENNA=sk

    tcsh$ setenv LC_PREMENNA sk

`LC_PREMENNA` je jedna z nasledujúcich:

- `LC_COLLATE` --- Triedenie re&tcaron;azcov. Nastavením tejto premennej mo&zcaron;no prinúti&tcaron; aplikácie, napr. `sort`, `ls` a iné, aby pri porovnávaní re&tcaron;azcov brali do úvahy miestne rozlo&zcaron;enie jednotlivých písmen v abecede. Sloven&ccaron;ina má napríklad hne&dcaron; nieko&lcaron;ko znakov, ktoré by pri triedení pod&lcaron;a &ccaron;íselnej hodnoty znaku spôsobovali problémy. Slovenské nastavenia triedenia povedia funkciam `strcoll` a `strxfrm`, &zcaron;e napríklad `ch` je jedno písmeno a nasleduje hne&dcaron; za `h` a nie za `c`, &zcaron;e široké `ä` nasleduje za dlhým `á` a to zase za oby&ccaron;ajným `a`. Skúste si to na príkaze `sort`. Zadajte písmená `cc ch hh`, potom zme&ncaron;te `LC_COLLATE` príkazom

      bash$ export LC_COLLATE=sk

      tcsh$ setenv LC_COLLATE sk

  Skúste to so `sort` znovu a porovnajte výsledok...

- `LC_CTYPE` --- Klasifikácia a prevod znakov, multibyte. Správne nastavenie tejto premennej je nutné pre korektné rozlišovanie znakov abecedy jednotlivých jazykov, ur&ccaron;enie &ccaron;íslic, tzv. bielych znakov, prevod malých písmen na ve&lcaron;ké, at&dcaron;. Najvhodnejšie je túto premennú nenastavova&tcaron; a tým umo&zcaron;ni&tcaron;, aby bola jej hodnota prebratá od premenných `LC_ALL` alebo `LANG` (vi&dcaron; &dcaron;alej). Ak ale nechcete pou&zcaron;íva&tcaron; slovenské nastavenia, len ma&tcaron; správne zobrazené slovenské fonty a funk&ccaron;nú slovenskú klávesnicu na konzole aj pod iXami, nastavte iba túto premennú.

  V&zcaron;dy si bu&dcaron;te stopercentne istí, &zcaron;e máte túto premennú nastavenú (bu&dcaron; cez `LC_ALL`, `LANG` alebo priamo), lebo inak nemá zmysel &ccaron;íta&tcaron; &dcaron;alej! Ono klasifikácia a prevod znakov neznie nejako lákavo, ale vedzte, &zcaron;e je to sakramentsky dôle&zcaron;ité pre &zcaron;ivot slovenských písmeniek vo vašom Linuxe!

- - `LC_MONETARY`
  - `LC_NUMERIC`
  --- Formát pe&ncaron;a&zcaron;ných a &ccaron;íselných hodnôt. Umo&zcaron;&ncaron;uje meni&tcaron; skupinu nastavení, ktoré sa pou&zcaron;ijú pri formátovaní pe&ncaron;a&zcaron;ných hodnôt alebo všetkých ostatných &ccaron;íselných hodnôt. Sú to desatinná &ccaron;iarka, odde&lcaron;ova&ccaron; tisícov, zoskupovanie &ccaron;íslic, znamienka pre kladné a zaporné hodnoty, at&dcaron;.

- `LC_TIME` --- Formátovanie dátumu a &ccaron;asu. Nastavenia odde&lcaron;ova&ccaron;ov medzi hodinami, minútami a sekundami, názvy dní, poradie rok, mesiac a de&ncaron; v dátume, ...

- `LC_MESSAGES` --- Výber jazyka, pou&zcaron;itého u&zcaron;ívate&lcaron;ským rozhraním na preklad hlášok programov. Toto je presne tá premenná, ktorá prinúti aplikácie hovori&tcaron; po slovensky. Vi&dcaron; &dcaron;alšie kapitoly.

S prekladom hlásení programov, hlavne s umiestnením súborov s prelo&zcaron;enými re&tcaron;azcami, súvisí premenná `NLSPATH`. Mala by obsahova&tcaron; dvojbodkami oddelený zoznam adresárov, v ktorých sa budú h&lcaron;ada&tcaron; `.mo` súbory pre miestne nastavenia dané premennou `LC_MESSAGES`. Premennú `NLSPATH` je však potrebné nastavova&tcaron; len vo výnimo&ccaron;ných prípadoch, preto&zcaron;e aplikácie h&lcaron;adajú preklady svojich hlásení v štandardných adresároch pre tieto súbory.

Okrem týchto premenných bolo implementovaných nieko&lcaron;ko &dcaron;alších, ktoré zatia&lcaron; nie sú zdokumentované (The GNU C Library Reference Manual). Ich význam je zrejmý z názvu, tak&zcaron;e uvediem aj svoju dedukciu.

- `LC_PAPER` --- Formát papiera. V našich zemepisných šírkach sa napríklad pou&zcaron;íva formát A4, v Amerike je to Letter, at&dcaron;. Pozor, táto premenná neobsahuje priamo názov formátu, ale (tak, ako všetky `LC_` premenné), skratku miestneho nastavenia, teda u nás to bude `sk`. Ak by sme chceli pou&zcaron;íva&tcaron; formát Letter, museli by sme túto premennú nastavi&tcaron; na kód miestneho nastavenia niektorej z krajín, ktorá pou&zcaron;íva takýto formát, napríklad `us`. V tomto prípade je nutné nainštalova&tcaron; balík s miestnymi nastaveniami pre túto krajinu (locales-us).

- `LC_NAME` --- Formát mena a priezviska. U nás má ka&zcaron;dý dve mená, píšu sa v poradí meno, priezvisko. V Rusku majú zase tri mená v poradí meno, otcovo-meno, priezvisko. V Ma&dcaron;arsku majú dve mená tak ako u nás, ale píšu sa v opa&ccaron;nom poradí. O tom je táto premenná. Asi...

- `LC_ADDRESS` --- Spôsob zápisu adresy. Poradie ulice a popisného &ccaron;ísla domu, ZIP kód, PS&Ccaron; apod.

- `LC_TELEPHONE` --- Formát telefónnych a faxových &ccaron;ísel. Ur&ccaron;uje zoskupovanie &ccaron;íslic, ich oddelovanie, po&ccaron;et &ccaron;ísel predvo&lcaron;by, ...

- `LC_MEASUREMENT` --- Miery. Jednotky hmotnosti, objemu, teploty a d&lacute;&zcaron;ky, pou&zcaron;ívané v tej ktorej krajine. Program napísaný v USA bude pravdepodobne po&ccaron;íta&tcaron; s galónmi vody, ale ak je správne napísaný, s premennou `LC_MEASUREMENT` nastavenou na sk bude zobrazova&tcaron; litre v správnom pomere. To isté platí napríklad pre prevod teploty vo Fahrenheitovej stupnici na stupne Celsia.

- `LC_IDENTIFICATION` --- Az apád, tak toto neviem. Rodné &ccaron;íslo? &Ccaron;íslo sociálneho poistenia? &Ccaron;íslo topánok?

#### &Dcaron;alšie premenné

- `LC_ALL` --- Ak je táto premenná nastavená, pou&zcaron;ije sa jej hodnota pre všetky vyššie spomenuté skupiny locales, bez oh&lcaron;adu na hodnotu príslušných premenných.

- `LANG` --- Hodnota tejto premennej sa pou&zcaron;ije pre tie skupiny locales, ktoré nemajú príslušnú premennú nastavenú.

- `LANGUAGE` --- Alternatívne miestne nastavenia. Táto premenná mô&zcaron;e obsahova&tcaron; usporiadaný zoznam kódov miestnych nastavení oddelených dvojbodkami. Súbory s prekladmi hlášok programov sa budú h&lcaron;ada&tcaron; v poradí, v akom sú ur&ccaron;ené v tomto zozname. Ak sa nepodarí nájs&tcaron; súbor s prelo&zcaron;enými hláškami programu v jednom jazyku, pou&zcaron;ije sa súbor pre nasledujúci jazyk v zozname `LANGUAGE`. Navyše, ak sa súbor pre prvý jazyk aj nájde, ale niektorý re&tcaron;azec z neho nie je prelo&zcaron;ený, nepou&zcaron;ije sa pôvodný (anglický), ale najskôr sa pokúsi nájs&tcaron; preklad daného re&tcaron;azca v súbore pre &dcaron;alší jazyk v zozname `LANGUAGE`. To je výhodné pre &lcaron;udí, ktorí okrem svojho jazyka ovládajú nejaký iný lepšie ako angli&ccaron;tinu, v ktorej sú zvy&ccaron;ajne programy originálne napísané. Napríklad Slovák by mohol ma&tcaron; nastavené `LANGUAGE="sk:cz"` a Szolvák z Komárom zase `LANGUAGE="hu:sk"`.

  Premenná `LANGUAGE` ovplyv&ncaron;uje len premennú `LC_MESSAGES`! Pre správnu funkciu je nutné nastavi&tcaron; aj ostatné premenné (minimálne `LC_CTYPE`).

- `LINGUAS` --- Táto premenná nemá špeciálny význam z h&lcaron;adiska GNU libc, ale zvykne sa pou&zcaron;íva&tcaron; pri inštalácii programov (zo zdrojákov). Medzerami oddelený zoznam kódov miestnych nastavení ur&ccaron;uje jazyky, pre ktoré si u&zcaron;ívate&lcaron; &zcaron;elá inštalova&tcaron; preklady re&tcaron;azcov aplikácie. Príklad:

      bash$ export LINGUAS="sk cz"
      bash$ ./configure
      bash$ make install

  Tieto príkazy skompilujú a nainštalujú aplikáciu s podporou sloven&ccaron;iny a &ccaron;eštiny. Inštala&ccaron;né skripty obvykle tie&zcaron; kontrolujú obsah premenných `LANG` a `LC_ALL`, tieto ale mô&zcaron;u obsahova&tcaron; len jeden kód miestnych nastavení.

- `RPM_INSTALL_LANG` --- &Ccaron;astejšie ako zo zdrojového kódu sa aplikácie inštalujú z rôznych balíkov (rpm, deb, ...). Kvôli šetreniu miestom na disku (a logike -- málokto ovláda tridsa&tcaron; re&ccaron;í) je v RPM4 mo&zcaron;né ur&ccaron;i&tcaron; jazyk, ktorého prelo&zcaron;ené hlášky sa budú inštalova&tcaron;. Preto odporú&ccaron;am do súboru `.bash_profile` (`.login`) u&zcaron;ívate&lcaron;a, ktorý inštaluje balíky (root), vlo&zcaron;i&tcaron; nasledovný riadok:

      bash$ export RPM_INSTALL_LANG=sk

      tcsh$ setenv RPM_INSTALL_LANG "sk"

  Ak sa vám nebodaj stane taká vec, &zcaron;e nainštalujete celý opera&ccaron;ný systém a a&zcaron; potom sa dozviete o tejto premennej (tak, ako sa to stalo aj mne), skúste skript uvedený v &ccaron;asti .

#### Priorita premenných

Miestne nastavenia sa ur&ccaron;ujú zo spomenutých premenných, pri&ccaron;om tieto sa vyhodnocujú v tomto poradí:

- `LANGUAGE` --- ovplyv&ncaron;uje len `LC_MESSAGES`
- `LC_ALL`
- `LC_*`
- `LANG`

To znamená asi to&lcaron;ko, &zcaron;e ke&dcaron; raz nastavíte `LC_ALL`, jednotlivé premenné `LC_*` sa u&zcaron; neberú do úvahy. Na druhej strane, ak máte napríklad nastavené len niektoré z `LC_*`, ostatné sa nastavia na hodnotu premennej `LANG`.

#### Kódy miestnych nastavení

Premenné, ktoré ovplyv&ncaron;ujú miestne nastavenia, sa nap&lacute;&ncaron;ajú kódmi miestnych nastavení. Kódy miestnych nastavení sú re&tcaron;azce, ktorých formát sa riadi nieko&lcaron;kými pravidlami. Všeobecný tvar je:

    jazyk[_územie[.kódovanie]][@modifikátor]

`jazyk` je napr. `sk` pre sloven&ccaron;inu, `cs` pre &ccaron;eštinu, `hu` pre ma&dcaron;ar&ccaron;inu, územie je `SK` pre Slovensko, `CZ` pre &Ccaron;eskú republiku, `HU` pre Ma&dcaron;arsko, kódovanie je `ISO-8859-2` pre všetky stredoeurópske jazyky (je mo&zcaron;ne pou&zcaron;i&tcaron; nieko&lcaron;ko formátov na zadanie kódovania) a modifikátor slu&zcaron;i na povolenie alebo zakázanie niektorých funkcií. Tie sú dané v definíciach miestnych nastavení. Napríklad, pre Ve&lcaron;kú Britániu je modifikátorom re&tcaron;azec `euro` a pri jeho pou&zcaron;ití sa ako pe&ncaron;a&zcaron;ná mena bude pou&zcaron;íva&tcaron; euro namiesto libry. To znamená, &zcaron;e sa musí pou&zcaron;i&tcaron; kódovanie `iso-8859-15`, ktoré definuje znaky euro a cent.

Príklady kódov miestnych nastavení (ka&zcaron;dý z týchto re&tcaron;azcov je mo&zcaron;né priradi&tcaron; premenným miestnych nastavení, ale naj&ccaron;astejšie sa pou&zcaron;ívajú len dvojpísmenkové skratky v poslednom st&lacute;pci):

##### Príklady kódov miestnych nastavení

sk_SK.ISO-8859-2 | sk_SK |  | sk
cs_CZ.ISO-8859-2 | cs_CZ@-ch | cs@-ch | cs
en_GB.iso8859 | en_GB | en@euro | en
ja_JP.ujis | ja_JP.EUC | ja_JP | ja

Nemali by sme zabudnú&tcaron; na dve štandardné locales, ktoré sa pou&zcaron;ijú, ak nie sú systémové premenné nastavené a programy ich pou&zcaron;ívajú do doby, kým sa inicializuje lokalizácia. Tvrdím, &zcaron;e sa pou&zcaron;ijú obe, preto&zcaron;e momentálne sú toto&zcaron;né, ale v budúcnosti sa mô&zcaron;u v tejto oblasti štandardy ISO C a POSIX odlišova&tcaron; a potom to bude zále&zcaron;a&tcaron; na konfigurácii systému.

- `C` --- nastavenia pod&lcaron;a štandardu ISO C.
- `POSIX` --- nastavenia pod&lcaron;a štandardu POSIX. V sú&ccaron;asnosti je to alias pre nastavenia `C`.

### Miestne nastavenia pre Slovensko

V prvom rade treba nainštalova&tcaron; balík s podporou miestnych nastavení, ktorý má názov locales a tie&zcaron; balík s podporou priamo pre Slovensko --- locales-sk. Ak máte záujem pou&zcaron;íva&tcaron; aj podporu pre nejaký iný jazyk (na našom území je aktuálna najmä &ccaron;eština a ma&dcaron;ar&ccaron;ina), musíte tie&zcaron; nainštalova&tcaron; balíky pre tieto jazyky.

V druhom rade si musíte nainštalova&tcaron; balíky s podporou miestnych nastavení a priamo sloven&ccaron;iny (sú to locales a locales-sk).

V &dcaron;alšom kroku si nezabudnite nainštalova&tcaron; balíky locales a locales-sk. Takisto, pre ka&zcaron;dý jazyk, ktorý sa chystáte pou&zcaron;íva&tcaron;, si nainštalujte balík s podporou miestnych nastavení.

V prípade problémov s miestnymi nastaveniami sa dr&zcaron;te predchádzajúcich troch krokov.

#### Súbory s miestnymi nastaveniami

Prejdime sa teraz trochu po našich adresároch. Prvý navštívime `/usr/share/locale/sk`. Na prvý poh&lcaron;ad vidno, &zcaron;e adresár a súbory v tomto adresári majú mená toto&zcaron;né s premennými, pomocou ktorých sa nastavujú jednotlivé kategórie miestnych nastavení. Je to preto, lebo práve z týchto súborov sa na&ccaron;ítajú nastavenia, ke&dcaron; je daná premenná nastavená na hodnotu `sk`. Okrem nich tu mô&zcaron;e by&tcaron; ešte súbor `charset`, ktorý obsahuje len jeden riadok s re&tcaron;azcom `iso-8859-2`. Ten hovorí, aké kódovanie znakov sa má pou&zcaron;i&tcaron; pre dané miestne nastavenia.

Všetky súbory v tomto adresári sú binárne dáta a adresár `LC_MESSAGES` obsahuje súbory, ktorých mená sú toto&zcaron;né s názvami niektorých balíkov nainštalovaných na vašom systéme, s príponou mo. Sú to preklady re&tcaron;azcov z jednotlivých aplikácií. O nich si povieme neskôr. Teraz by sme mohli zisti&tcaron;, &ccaron;o vlastne obsahujú súbory `LC_*`.

Presu&ncaron;me sa do adresára `/usr/share/i18n/`. Tu, v textovom súbore `sk_SK` v podadresári `locales/` sa kone&ccaron;ne nachádzajú slovenské miestne nastavenia v &ccaron;itate&lcaron;nej (a editovate&lcaron;nej) forme. Súbory v tomto adresári majú presne danú štruktúru, ktorá je popísaná v manuálovej stránke locale(5). Pre be&zcaron;ného pou&zcaron;ívate&lcaron;a nemá zmysel meni&tcaron; nastavenia v tomto súbore, ke&dcaron;&zcaron;e ide o štandardné nastavenia, ktoré sa pou&zcaron;ívajú na celom Slovensku. Ale, proti Gustovi &zcaron;iadna putika! Ak sa teda rozhodnete zmeni&tcaron; nie&ccaron;o v tomto súbore, musíte aktualizova&tcaron; súbory v prvom spomínanom adresári `/usr/share/locales/sk/` príkazom, ktorý údaje v súbore `sk_SK` skompiluje a ulo&zcaron;í do súborov

- `LC_COLLATE`
- `LC_CTYPE`
- ...

    sh$ localedef -i sk_SK -f ISO-8859-2 sk_SK

V podadresári `/usr/share/i18n/charmaps/` sa nachádzajú súbory s popismi jednotlivých kódovani znakov. Pre Slovensko je aktuálny `ISO-8859-2` (&ccaron;o je aj obsah spomínaneho súboru `charset`).

V adresári `/usr/share/locale/` sa nachádza súbor `locale.alias`, ktorý definuje tzv. aliasy pre kódy miestnych nastavení. Pre správnu funkciu slovenských miestnych nastavení by mal obsahova&tcaron; tieto dva riadky:

    sk              sk_SK.ISO-8859-2
    slovak          sk_SK.ISO-8859-2

To zabezpe&ccaron;í, &zcaron;e aj ke&dcaron; nezadáte kódovanie znakov, bude pou&zcaron;ité iso-8859-2. Druhý riadok má na svedomí to, &zcaron;e namiesto sk mo&zcaron;no zada&tcaron; slovak.

Ale na aliasy typu `slovak` si dávajte bacha! Niektoré aplikácie, ktoré v súvislosti s miestnymi nastaveniami nevyu&zcaron;ívajú slu&zcaron;by libc, toti&zcaron; na aliasy kaš&lcaron;ú a zaujímajú ich len prvé dva znaky nastavených premenných. A tak sa zo `slovak` stane `sl`, &ccaron;o je Slovinsko. Pozitívne je, &zcaron;e pre sloven&ccaron;inu mô&zcaron;ete nastavi&tcaron; premennú napríklad na hodnotu `skaderukaskadenoha`.

#### Konfigurácia miestnych nastavení

Nastavenia internacionalizácie sa (v RedHat a Mandrake) nachádzajú v súbore `/etc/sysconfig/i18n`. Je to ve&lcaron;mi u&zcaron;ito&ccaron;ný súbor, ktorý si rýchlo ob&lcaron;úbite. Mo&zcaron;no v &ncaron;om nastavi&tcaron; všetko, &ccaron;o sa kedy týkalo internacionalizácie, národných fontov a rozlo&zcaron;ení kláves. Tento súbor však len definuje systémové premenné a zvykne sa vklada&tcaron; (`source /etc/sysconfig/i18n`) do inicializa&ccaron;ných skriptov. Exportovanie premenných (odovzdanie ostatným aplikáciám) má na starosti skript `/etc/profile.d/lang.sh` (bash) alebo `/etc/profile.d/lang.csh` (tcsh). Tento sa vykoná pri ka&zcaron;dom štarte shellu, typicky je volaný z `/etc/profile` (bash) alebo `/etc/csh.cshrc` (tcsh).

Súbor `/etc/sysconfig/i18n` definuje nastavenia pre celý systém. Tieto sa pou&zcaron;ijú, ak sa nenájde súbor s u&zcaron;ívate&lcaron;ovými nastaveniami. Ka&zcaron;dý u&zcaron;ívate&lcaron; si mô&zcaron;e ur&ccaron;i&tcaron; svoje vlastné nastavenia v súbore `.i18n` v jeho domovskom adresári. Nastavenia sa v&zcaron;dy &ccaron;ítajú len z jedného z týchto súborov, teda ak má u&zcaron;ívate&lcaron; svoj vlastný súbor `˜/.i18n`, nastavenia zo súboru `/etc/sysconfig/i18n` sa ignorujú.

U&zcaron;ívate&lcaron; si mô&zcaron;e zmeni&tcaron; nastavenia aj ru&ccaron;ne, kedyko&lcaron;vek sa mu zachce, nastavením premenných prostredia

- `LC_MESSAGES`
- `LANG`
- at&dcaron;.

Vypnú&tcaron; nejaké nastavenie je mo&zcaron;né príkazom

    sh$ unset LC_MESSAGES LANG

Tým sa zrušia nastavenia daných premenných (a pou&zcaron;ije sa štandardné locale `C` alebo `POSIX`).

Ak máte napríklad nastavené premenné `LC_ALL=sk` a `LC_MESSAGES=cz`, tak po príkaze `unset LC_ALL` nebudete ma&tcaron; hlásenia programov v angli&ccaron;tine, ale &ccaron;eštine. Preto, ak chcete vypnú&tcaron; nejaké nastavenia, v&zcaron;dy musíte príkazom unset zruši&tcaron; nastavenia všetkých premenných, ktoré mô&zcaron;u ovplyv&ncaron;ova&tcaron; dané miestne nastavenia.

##### export/setenv

Neodpustím si malú poznámku k príkazu `export`. Je to vstavaná funkcia všetkých shellov kompatibilných s klasickým sh (teda aj bash). Pre shelly typu tcsh je ekvivalentom príkaz `setenv`.

Je dôle&zcaron;ité uvedomi&tcaron; si, &ccaron;o presne tento príkaz robí s premennými. V dokumentácii k bashu sa hovorí, &zcaron;e `export` ozna&ccaron;í premennú, aby bola odovzdaná detským (child) procesom v rámci prostredia (environment). To znamená asi to&lcaron;ko, &zcaron;e ke&dcaron; spustíte napr. iXy z materského procesu bash, ktorý pri štarte exportoval premennú `LANG=sk`, všetky aplikácie v prostredí X Window System budú dedi&tcaron; toto nastavenie a teda (ak to sami podporujú) budú fungova&tcaron; po slovensky. Ak budete chcie&tcaron; spusti&tcaron; aplikáciu bez slovenských nastavení, musíte v xterme zada&tcaron; príkaz `unset LANG` (`unsetenv LANG` pre tcsh), &ccaron;ím pre všetky detské procesy xtermu (presnejšie shellu, ktorý je v &ncaron;om spustený), zrušíte nastavenie premennej `LANG`. Potom aplikácie spustené priamo z tohto xtermu budú fungova&tcaron; bez podpory sloven&ccaron;iny. Trochu sa s tým pohrajte.

#### Nastavenie &ccaron;asovej zóny

S miestnymi nastaveniami úzko súvisí aj nastavenie &ccaron;asovej zóny. Vedel by som o tom rozpráva&tcaron; celé hodiny, ale ono by to muselo by&tcaron; zlo&zcaron;itejšie ako len nastavenie jednej premennej... A to takto:

    bash$ export TZ="Europe/Bratislava"

    tcsh$ setenv TZ "Europe/Bratislava"

Toto nastavenie ovplyv&ncaron;uje len &ccaron;asový posun oproti hardverovým hodinám. (Mimochodom, odporú&ccaron;am hardverové hodiny nastavené na greenwichský svetový &ccaron;as, &ccaron;ím tie&zcaron; odpadajú problémy s prechodom medzi letným a zimným &ccaron;asom at&dcaron;. ale o tom sú popísané iné súbory.) Toto celé je dos&tcaron; dobrá vec, hlavne ak mate prístup k po&ccaron;íta&ccaron;u v inej &ccaron;asovej zóne, ale chcete pracova&tcaron; s &ccaron;asom v stredoeurópskej zóne. Do svojho súboru `.bash_profile` (`.login` pre tcsh) vlo&zcaron;te vyššie uvedený riadok.

### Príklady miestnych nastavení

- U&zcaron;ívate&lcaron; je síce zo stredného Slovenska, ale u&zcaron; ke&dcaron; s ním bola jeho mama tehotná, púš&tcaron;ala mu do brucha kurzy angli&ccaron;tiny. Nemá teda zmysel pou&zcaron;íva&tcaron; slovenské nastavenia, a&zcaron; na krajné prípady, napr. slovenské fonty v Gimpe. Darujte mu súbor `.i18n` s nasledovným obsahom (aj na takéto malé oné potrebuje locales-sk):

      LC_CTYPE=sk

- U&zcaron;ívate&lcaron; je normálny, má rád svoj materinský jazyk, ale netrápi ho, ke&dcaron; má polovicu aplikácií po slovensky a polovicu po anglicky. Po &ccaron;esky vie. Toto ho poteší (nezabudnite mu potajomky nainštalova&tcaron; aj locales-cs):

      LANGUAGE=sk:cs
      LANG=sk

- U&zcaron;ívate&lcaron; je z blízkeho juhu, jeho ob&lcaron;úbené pleso je Balaton, všetky hlášky chce po ma&dcaron;arsky, ak sa inak nedá, pochopí aj sloven&ccaron;inu. Nesmieme zabudnú&tcaron; na jeho miernu schizofreniu, pri&ccaron;om jedno jeho ja potrebuje slovenské triedenie re&tcaron;azcov a druhé nevie &zcaron;i&tcaron; bez formátovania dátumu a &ccaron;asu v &ccaron;eštine. Nikdy sa nesmie zabudnú&tcaron; na inštaláciu prekladov hlášok pre ma&dcaron;ar&ccaron;inu, &ccaron;eštinu a sloven&ccaron;inu z balíkov, ktoré podporujú premennú LINGUAS. Treba ho tie&zcaron; presved&ccaron;i&tcaron;, &zcaron;e inštalácia locales-{sk,hu,cs} nepredstavuje bezpe&ccaron;nostné riziko:

      LANGUAGE=hu:sk:cs
      LC_COLLATE=sk
      LC_TIME=cs
      LANG=hu
      LINGUAS="hu cs sk"

## Nastavenia konzoly

Táto kapitola by mala &ccaron;ítavou, pou&ccaron;nou a zárove&ncaron; zábavnou formou pojednáva&tcaron; o veciach medzi prstom a okom. Základnou otázkou nech nám je Zmysel &zcaron;ivota, vesmíru a vôbec.

### Sloven&ccaron;ina na výstupe textovej konzoly

#### Fonty

Ke&dcaron; zobudíte o polnoci hocikoho, kto vo svojom &zcaron;ivote videl po&ccaron;íta&ccaron; a opýtate sa ho, ako rozbeha&tcaron; slovenské znaky, ur&ccaron;ite spomenie nie&ccaron;o ako fonty. Na zobrazovanie znakov na obrazovku -- &ccaron;i u&zcaron; v textovom alebo grafickom re&zcaron;ime -- slú&zcaron;ia skuto&ccaron;ne fonty. Fonty pre konzolu a programy ur&ccaron;ené na manipuláciu s nimi sa nachádzajú v balíku kbd. Po jeho nainštalovaní sú súbory s fontami umiestnené v adresári `/usr/lib/kbd/consolefonts/`.

Pre nás sú dôle&zcaron;ité najmä súbory, ktoré majú v mene `iso02`, `lat2`, `latin2` alebo &ccaron;íslo `852`. To nazna&ccaron;uje, &zcaron;e ide o fonty s podporou ISO-8859-2 (latin2), prípadne DOS codepage 852, &ccaron;o sú štandardy aj pre slovenskú diakritiku.

Pozor, pôvodný balík sa volá kbd, ale existuje jeho rozšírená verzia, ktorá sa objavuje v distribúciách -- console-tools. Rozdiely medzi nimi sú minimálne, pre kbd budeme pou&zcaron;íva&tcaron; príkaz `setfont`, pre console-tools zase `consolechars`. Taktie&zcaron;, názvy dodávaných fontov sa trochu odlišujú, tak&zcaron;e budem uvádza&tcaron; ekvivalenty pre oba balíky.

#### Ako fonty fungujú

Existuje nieko&lcaron;ko súborových formátov na ukladanie fontov, princíp je však rovnaký -- súbor obsahuje 256 obrázkov (glyphs), z ktorých všetky majú rovnaký rozmer (napr. 8x16 bodov -- ve&lcaron;kos&tcaron; fontu) a ka&zcaron;dý zobrazuje jeden znak.

Aby nám tých 256 obrázkov bolo na nie&ccaron;o dobrých, je treba font zo súboru zavies&tcaron; do znakového generátora videokarty. Na to slú&zcaron;i jeden z príkazov

kbd:

      		  setfont
      		  meno-fontu

console-tools:

      		  consolechars
      		  -f meno-fontu

`meno-fontu` mô&zcaron;e by&tcaron; absolútna alebo relatívna cesta k súboru s fontom, alebo meno súboru, pokia&lcaron; sa nachádza v adresári `/usr/lib/kbd/consolefonts/`, &ccaron;i u&zcaron; s príponou, alebo bez.

Pre &lcaron;ahšie pochopenie tých obrázkov, skúste nahradi&tcaron; `meno-fontu` re&tcaron;azcom `t850` a sledujte výsledok na všetkých virtuálnych konzolách.

Naspä&tcaron; k štandardnému fontu sa v&zcaron;dy dostanete jedným z príkazov

kbd:

      sh$ setfont

console-tools:

      sh$ consolechars -d

&Ccaron;o sa presne deje? Program `setfont`/`consolechars` zavedie všetkých 256 obrázkov do znakového generátora EGA/VGA karty. Od tohto momentu sa na všetkých konzolách bude znak s ASCII kódom napr. 65 vykreslova&tcaron; ako šesdesiaty piaty obrázok z našeho súboru s fontom. Ešte raz pripomínam a dvakrát pod&ccaron;iarkujem, &zcaron;e font je v&zcaron;dy rovnaký pre všetky virtuálne konzoly, na ktorých zobrazuje znaky ten istý znakový generátor EGA/VGA karty.

Dôle&zcaron;ité je uvedomi&tcaron; si, &zcaron;e interne ide naozaj len o obrázky a tvar niektorého znaku vo fonte nemá ni&ccaron; spolo&ccaron;ného s jeho ASCII kódom. Ak by ste si sami vytvorili nejaký font (v dokumentácii ku kbd/console-tools máte informácie o všetkých formátoch), v ktorom by mal ten šesdesiaty piaty obrázok tvar písmena `z`, po jeho natiahnutí sa vám bude pri zadaní Alt65, &ccaron;o je ASCII kód písmena `A`, zobrazova&tcaron; znak `z`. Ale ak tento znak ulo&zcaron;íte do súboru, v tomto sa bude nachádza&tcaron; bajt s hodnotou 65, teda písmeno `A`.

#### Fonty ISO-8859-2

Toto vyu&zcaron;íva štandard ISO-8859-2 (a iné) - spolo&ccaron;né znaky s ASCII vykreslí rovnako a znaky špecifické pre tú ktorú abecedu namapuje na menej pou&zcaron;ívané znaky ASCII tabu&lcaron;ky. Kam presne ktorá norma umiest&ncaron;uje znaky s diakritikou, nás zaujíma&tcaron; nemusí (pokia&lcaron; nevytvárame vlastné fonty), hlavné je, &zcaron;e napr. anglický text je nezmenený (angli&ccaron;tina má všetky znaky spolo&ccaron;né so sloven&ccaron;inou) a slovenský text u&zcaron; viac neobsahuje hlúpe znaky, ktoré so sloven&ccaron;inou nemajú ni&ccaron; spolo&ccaron;né.

Slovenské (ISO-8859-2) fonty, ktoré sú sú&ccaron;as&tcaron;ou balíkov kbd a console-tools:

kbd:

  lat2-{08,10,12,14,16}, lat2a-16, iso02.{08,14,16}

console-tools:

  lat2-{08,10,12,14,16}, lat2u-16, iso02.f{08,14,16}

Na zavedenie fontu pou&zcaron;ite príkaz

kbd:

      sh$ setfont meno-zo-zoznamu

console-tools:

      sh$ consolechars -f meno-zo-zoznamu

Odporú&ccaron;am pou&zcaron;íva&tcaron; `lat2a-16`, resp. `lat2u-16`. Ostatné fonty majú bezchybné zobrazovanie slovenských znakov, problém však nastáva pri aplikáciách, ktoré vyu&zcaron;ívajú znaky na kreslenie rám&ccaron;ekov (napr. `mc`).

&Ccaron;o sa týka fontov `iso02.*` z balíka kbd, treba pri nich pou&zcaron;i&tcaron; argument príkazu `setfont` `-m latin2u.trans`. Tak&zcaron;e celý príkaz na zavedenie niektorého z týchto fontov je:

kbd:

      sh$ setfont iso02.16 -m latin2u.trans

console-tools:

      sh$ consoletrans -f lat2u-16 -m iso02

V súbore `latin2u.trans` (`iso02.acm`) sa nachádza tzv. Aplication-Charset Map (ACM), akási prevodná tabu&lcaron;ka, ktorá obsahuje riadok pre ka&zcaron;dý znak fontu a jeho podobu v kódovaní UTF-8.

#### Automatické zavádzanie fontov

Ak ste si našli svoj font, ktorý chcete pou&zcaron;íva&tcaron; a ma&tcaron; ho automaticky zavedený v&zcaron;dy pri štarte, nie je ni&ccaron; &lcaron;ahšie. Inicializa&ccaron;ný skript `rc.sysinit` robí asi toto: skontroluje, &ccaron;i existuje súbor `/etc/sysconfig/i18n` a program (skript) `/sbin/setsysfont`. Ak áno, spustí `setsysfont`. Ten na&ccaron;íta `/etc/sysinfo/i18n` a pod&lcaron;a premenných definovaných v tomto súbore príkazom `consolechars` alebo `setfont` zavedie font.

Tak&zcaron;e sta&ccaron;í nastavi&tcaron; správne premenné v súbore `/etc/sysconfig/i18n` a skript `/sbin/setsysfont` urobí všetko za nás. Tento skript mo&zcaron;no spusti&tcaron; kedyko&lcaron;vek chcete zavies&tcaron; font nastavený ako štandardný pre systém.

Premenné v súbore `/etc/sysinit/i18n` sú (pou&zcaron;ívajte len mená súborov bez cesty a bez prípony!):

kbd:

      SYSFONT=lat2a-16

console-tools:

      SYSFONT=lat2u-16
      SYSFONTACM=iso02

Skriptík `setsysfont` obsahujú oba balíky a kedyko&lcaron;vek mô&zcaron;ete zavies&tcaron; font nastavený ako systémový v súbore `/etc/sysinit/i18n` jednoduchým zadaním

    sh$ /sbin/setsysfont

Pod&lcaron;a toho, &ccaron;o sme si hovorili o tom, &zcaron;e pre všetky virtuálne konzoly mô&zcaron;e by&tcaron; nastavený len jeden spolo&ccaron;ný font, nemá ve&lcaron;ký zmysel zavádza&tcaron; nastavovanie fontu zvláš&tcaron; pre ka&zcaron;dého u&zcaron;ívate&lcaron;a. S tým súvisí aj fakt, &zcaron;e nastavenie fontu sa vz&tcaron;ahuje k danému po&ccaron;íta&ccaron;u, pri ktorom práve sedíte a nie k tomu, ku ktorému ste pripojení napr. cez ssh.

Predsa len si viem predstavi&tcaron; prípad, ke&dcaron; niektorý z viacerých pou&zcaron;ívate&lcaron;ov jedného po&ccaron;íta&ccaron;a potrebuje odlišný font. V tom prípade mô&zcaron;e vlo&zcaron;i&tcaron; príkaz na zavádzanie fontov do svojich skriptov, ktoré vykonáva shell pri prihlásení a odhlásení. Pre bash by to mohlo vyzera&tcaron; takto:

`~/.bash_profile`:

      if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.font ]; then
      	setfont -o ~/.font gr928a-8x16
      fi

`~/.bash_logout`:

      if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.font ]; then
      	setfont ~/.font
      	rm -f ~/.font
      fi

Vonkoncom to nie je ideálne riešenie, ale svoj ú&ccaron;el splní (minimálne po moment prvého odhlásenia). Trochu sa s tým pozabávajte, aby sa font (a rozlo&zcaron;enie kláves) menilo len pri prvom prihlásení a poslednom odhlásení, tie&zcaron; setfont pod iXami nemá ve&lcaron;mi zmysel a tak... V Tips-HOWTO je uvedený spôsob, ako zisti&tcaron;, na ko&lcaron;kých virtuálnych konzolách je ešte u&zcaron;ívate&lcaron; prihlásený.

Iná&ccaron;, aby bolo jasné, toto vám bude fungova&tcaron; len na lokálnom stroji - zamyslite sa, pre&ccaron;o asi `setfont` (aj `loadkeys`) nefunguje cez vzdialený terminál a &ccaron;i by ste z toho nie&ccaron;o mali, keby to tak nebolo.

Ak to s takýmto riešením myslíte vá&zcaron;ne, tak skôr uva&zcaron;ujte nad modifikáciou skriptu `/etc/profile.d/lang.sh`, kde by sa kontroloval aj obsah u&zcaron;ívate&lcaron;ského súboru `~/.i18n` a pod&lcaron;a toho by sa zaviedol skript, popis rozlo&zcaron;enia kláves, prípadne nejaké premenné...

### Slovenská klávesnica na textovej konzole

Ke&dcaron; je slovenský font na konzole rozbehaný a naše národné znaky sa zobrazujú správne, máme so sloven&ccaron;inou problém &ccaron;íslo dva - ako tam tie znaky dosta&tcaron;? Keby ste si chceli tento súbor len pre&ccaron;íta&tcaron; bez potreby následnej navštevy psychiatra, sta&ccaron;ilo by zavies&tcaron; nejaký font so slovenskou podporou. Ale ke&dcaron;&zcaron;e ste uvedomelý linuxák / uvedomelá linuxá&ccaron;ka, hne&dcaron; chcete do Slovak-HOWTO prispie&tcaron; a pomocou klávesnice písa&tcaron; slovenský text. Na to potrebujete s tou klávesnicou nie&ccaron;o urobi&tcaron;.

#### Popis rozlo&zcaron;enia kláves (keymap)

Adresáre `/usr/lib/kbd/keymaps/i386/qwertz/` a `qwerty/` obsahujú po nainštalovaní balíka kbd/console-tools aj popisy slovenského rozlo&zcaron;enia kláves. Pre nás sú zaujímavé súbory

- `sk-prog-qwerty.map.gz`
- `sk-qwerty.map.gz`
- `sk-prog-qwertz.map.gz`
- `sk-qwertz.map.gz`

Tieto súbory obsahujú definície rozlo&zcaron;enia kláves pre slovenský jazyk, pri&ccaron;om rozdiely medzi nimi sú v umiestnení kláves Y a Z a po&ccaron;te slovenských znakov, ktoré pomocou nich mo&zcaron;no napísa&tcaron; priamo (bez m&racute;tvych kláves). Najviac sa na slovenský písací stroj podobá `sk-qwertz`, najmenšie zmeny oproti americkej klávesnici sú zase v `sk-prog-qwerty`.

Súbory v adresári `/usr/lib/kbd/keymaps/i386/include/` obsahujú popis základných rozlo&zcaron;ení kláves (`azerty` , `qwerty`, `qwertz` ), prídavných kláves (`keypad`, `windowkeys`), prípadne problémových kláves (`delete`, `backspace`, `ctrl` ). Súbory `linux-*.inc.gz` sú špecifické pre linux (teda nie pre jazyk). Sú to napr. k&lcaron;ú&ccaron;e (F1-F12, kombinovaním s Ctrl a Shift a&zcaron; po F48), Shift PgUp a Shift PgDown, at&dcaron;.

Keymapy `*.inc.gz` nepopisujú kompletné rozlo&zcaron;enie klávesnice, ale len niektorých jej &ccaron;astí. Vyu&zcaron;ívajú sa pri pripájaní (include) zo súborov `*.map.gz`, &ccaron;o je výhodné z dôvodu jednoduchšej konfigurácie klávesnice. Napríklad zmenou jedného riadku v súbore s rozlo&zcaron;ením `sk-qwerty` mô&zcaron;me dosta&tcaron; rozlo&zcaron;enie qwertz, prípadne (to asi vyu&zcaron;ijete) jednoducho odstavi&tcaron; znaky euro a cent, ktoré (zatia&lcaron;?) nepotrebujeme a zbyto&ccaron;ne nám zaberajú znaky E a C.

Na zavedenie súboru s popisom rozlo&zcaron;enia kláves slú&zcaron;i nasledovný príkaz:

    	  loadkeys
    	  nazov

kde `nazov` mô&zcaron;e by&tcaron; absolútna alebo relatívna cesta ku keymap súboru, alebo meno súboru, pokia&lcaron; sa nachádza v adresári `/usr/lib/kbd/keymaps/`, &ccaron;i u&zcaron; s príponou, alebo bez.

Štandardné slovenské popisy rozlo&zcaron;enia kláves nájdeme vo vyššie spomínaných `*.map.gz` súboroch. Ak sa chcete vráti&tcaron; k štandardnému rozlo&zcaron;eniu, príkaz

    sh$ loadkeys -d

zavedie pôvodné, ktoré je ulo&zcaron;ené v súbore `defkeymap.map.gz` niekde medzi ostatnými keymap súbormi. Predtým ale nikdy nezabudnite zmeni&tcaron; re&zcaron;im slovenskej klávesnice na US znaky, tzn. 1 dáva `1` a nie `+` at&dcaron;. Ak by ste predsa zabudli, je mo&zcaron;né, &zcaron;e klávesy, kde sa nachádzali slovenské znaky, nebudú fungova&tcaron; správne (v skuto&ccaron;nosti budú fungova&tcaron; správne, ale vám sa to nebude pá&ccaron;i&tcaron;). Vtedy znovu zave&dcaron;te predchadzájúcu keymapu (na nefunk&ccaron;né klávesy pou&zcaron;ite AltGr - pravý Alt) a klávesou Pause/Break všetko napravíte. Potom mô&zcaron;ete znova zavies&tcaron; defkeymap.

Pokia&lcaron; sa vám nepá&ccaron;i ani jeden zo štandardných keymap súborov pre sloven&ccaron;inu, &ccaron;o je pravdepodobné v&dcaron;aka riadku

    include "euro"

v include súboroch `qwerty-layout.inc.gz` aj `qwertz-layout.inc.gz`, mô&zcaron;ete k&lcaron;udne pozmeni&tcaron; existujúci súbor s popisom rozlo&zcaron;enia kláves, prípadne vytvori&tcaron; nový. Nebojte sa, je to zlo&zcaron;ité! Nebudem to tu rozpisova&tcaron; všetko, prezrite si zopár kmap súborov, pre&ccaron;ítajte manuálovú stránku keymaps(5) a mali by ste to &lcaron;ahko pochopi&tcaron;.

My si povieme len o základných veciach, ktoré nám pomô&zcaron;u pozmeni&tcaron; existujúce kmap súbory s popismi slovenských klávesníc, aby ste si poradili s (mne známymi) komplikáciami, alebo upravili rozlo&zcaron;enie kláves pod&lcaron;a svojho gusta.

#### Include a nesprávna funkcia kláves E a C

Problém s E a C je spôsobený zavedením jednotnej meny v európskej únii. Na vine nie je ani tak EU, ale niekto, kto symboly pre euro a cent umiestnil na AltGr E a AltGrC , &ccaron;o sú naše oby&ccaron;ajné E a C. Toti&zcaron;, národné klávesnice sú vä&ccaron;šinou riešené tak, &zcaron;e po zavedení súboru na&dcaron;alej funguje americké rozlo&zcaron;enie a na prepínanie do národného re&zcaron;imu sa pou&zcaron;íva klávesa Pause, alebo mô&zcaron;me zadáva&tcaron; národné klávesy pri sú&ccaron;asnom dr&zcaron;aní klávesy AltGr (pravý Alt). Súbor `euro.inc`, ktorý definuje tieto dva problémové symboly, je pripojený zo súboru `qwerty-layout.inc`, ktorý zase pripájajú samotné slovenské keymapy (`sk-qwerty`, `sk-prog-qwertz`, …).

Riešenie je ve&lcaron;mi jednoduché - zeditujete `qwerty-layout.inc` (alebo `qwertz-layout.inc`) a odkomentujete znakom `&num;` riadok

    include "euro"

#### Keycode a definovanie kláves

Predchádzajúci problém s eurom mo&zcaron;no vyrieši&tcaron; aj definovaním znakov E a C v samotnom súbore `sk-qwerty.kmap.gz` (alebo inom, ktorý pou&zcaron;ívate) pomocou slova `keycode`:

    keycode 18 = e
    keycode 46 = c

V keymap súboroch je pre ka&zcaron;dú klávesu (alebo aspo&ncaron; pre ka&zcaron;dú, ktorú chceme predefinova&tcaron;) jeden riadok pribli&zcaron;ne tohto razenia:

    keycode 3 = two at lcaron two nul nul nul nul Meta_two Meta_two...

&Ccaron;íslo za `keycode` ozna&ccaron;uje ur&ccaron;itú klávesu a re&tcaron;azce za `=` hovoria o tom, aký znak má ovláda&ccaron; klávesnice generova&tcaron; pri stla&ccaron;ení tejto klávesy, a to bu&dcaron; samotnej, alebo v kombinácii so špeciálnymi klávesmi Shift, AltGr, Control, Alt, ShiftL, ShiftR, Ctrl a CtrlR. To nám dáva 256 mo&zcaron;ných znakov na ka&zcaron;dú klávesu.

Vä&ccaron;šinou sa pozme&ncaron;uje len prvých 16 kombinácií modifikátorov. To je význam riadku

    keymaps 0-15

na za&ccaron;iatku kmap súborov.

V nasledujúcom zozname je týchto 16 kombinácií (po riadkoch):

- &zcaron;iadny
- Shift
- AltGr
- ShiftAltGr
- Control
- ShiftControl
- AltGrControl
- ShiftAltGrControl
- Alt
- ShiftAlt
- AltGrAlt
- ShiftAltGrAlt
- ControlAlt
- ShiftControlAlt
- AltGrControlAlt
- ShiftAltGrControl Alt

Z h&lcaron;adiska slovenskej klávesnice sú dôle&zcaron;ité len prvé štyri - prvé dva sú zvy&ccaron;ajne nezmenené americké znaky, napr. `two at`, &ccaron;o je 2 @, a druhé dva sú znaky slovenskej abecedy, ktoré bude ovláda&ccaron; klávesnice posiela&tcaron; aplikáciám ak pri stla&ccaron;ení tejto klávesy budeme sú&ccaron;asne dr&zcaron;a&tcaron; klávesu AltGr (pravý Alt), napr. `lcaron two`, &ccaron;o je naše &lcaron; 2.

Aby ste mohli vklada&tcaron; slovenské znaky, nemusíte celý &ccaron;as pridr&zcaron;iava&tcaron; AltGr nosom, ale mô&zcaron;ete pou&zcaron;i&tcaron; Pause/Break, ktorý v kontexte s národnými klávesnicami funguje ako AltGr Lock. Chápte to tak, &zcaron;e ke&dcaron; sa prepnete do slovenského re&zcaron;imu stla&ccaron;ením Pause/Break, prvé a druhé dva re&tcaron;azce v ka&zcaron;dom riadku keycode sa vymenia, napr.

    two at lcaron two -> lcaron two two at

Vtedy mô&zcaron;ete pou&zcaron;i&tcaron; AltGr na zadávanie znakov americkej klávesnice, alebo sa opätovným stla&ccaron;ením Pause/Break prepnú&tcaron; spät do US re&zcaron;imu.

Riadok pre klávesu s kódom 41 (znaky ` a ~), má v súbore `sk-qwerty.map.gz` nasledovný tvar:

    keycode 41 = grave asciitilde dead_diaeresis dead_circumflex ...

Mne osobne sa nepá&ccaron;i, &zcaron;e sú tu umiestnené m&racute;tve klávesy dead_diaeresis (dve bodky nad znakom) a dead_circumflex (mäk&ccaron;e&ncaron;), preto&zcaron;e ich nepotrebujem --- ä aj ô na slovenskej klávesnici predsa je. A keby aj nebolo, na ich písanie mô&zcaron;em k&lcaron;udne pou&zcaron;i&tcaron; m&racute;tvy kláves mäk&ccaron;e&ncaron;. O tom si bli&zcaron;šie povieme v &ccaron;asti o compose sekvenciách. Teraz chcem ma&tcaron; na tomto mieste znaky ; (semicolon) a ° (degree) tak, ako je to na popiske mojej klávesnice. Zmením teda riadok takto:

    keycode 41 = grave asciitilde semicolon degree ...

Iná&ccaron;, ten stupe&ncaron; asi nie je stupe&ncaron;, ale m&racute;tvy znak krú&zcaron;ku nad písmenom, napr. v &ccaron;eštine nad u, ale taký kláves je nám fakt nani&ccaron;. Radšej budeme písa&tcaron; stupne.

Názvy znakov, ktoré sa pou&zcaron;ívajú pri definovaní jednotlivých kláves si mô&zcaron;ete pre znaky ASCII zisti&tcaron; v súbore `us.map.gz`. &Ccaron;íselné kódy všetkých kláves vám vyp&lcaron;uje program

    	  showkey

Pravidlá pre názvy znakov špecifických pre sloven&ccaron;inu v kmap súboroch:

1. Prvé písmeno v názve ur&ccaron;uje ASCII znak, pre ktorý chceme pou&zcaron;i&tcaron; diakritiku.

2. K nemu pridáme identifikátor diakritického znamienka:

   - caron --- mäk&ccaron;e&ncaron;
   - acute --- d&lacute;&zcaron;e&ncaron;
   - diaeresis --- dve bodky nad
   - circumflex --- voká&ncaron;

   Napríklad:

   - scaron = š
   - uacute = ú
   - Ocircumflex = Ô

Názvy &dcaron;alších znakov špecifických pre sloven&ccaron;inu:

- 0xa7 --- § (paragraf)
- degree --- ° stupe&ncaron;

Pre správnu interpretáciu identifikátorov znakov s diakritikou je nutné na za&ccaron;iatku kmap súboru ur&ccaron;i&tcaron; kódovú stránku, pre ktorú bude ur&ccaron;ený tento popis rozlo&zcaron;enia kláves. Ide o to, &zcaron;e ten istý znak mô&zcaron;e ma&tcaron; v rôznych kódových stránkach iný ASCII kód. Implicitná hodnota je `iso-8859-1`, teda pre slovenské keymapy je nutné vlo&zcaron;i&tcaron; riadok:

    charset "iso-8859-2"

Ešte jeden príklad: ak chcete pou&zcaron;íva&tcaron; slovenské rozlo&zcaron;enie `qwertz` a americké rozlo&zcaron;enie `qwerty`, potrebujete vymeni&tcaron; znaky Y a Z:

    keycode 21 = y Y z Z
    keycode 44 = z Z y Y

Na prvý poh&lcaron;ad to mô&zcaron;e fungova&tcaron; dobre, ale problém sa prejaví pri zapnutom Caps Lock - znaky Y a Z sa stále píšu malými písmenami. Pri písaní popisov rozlo&zcaron;ení znakov mo&zcaron;no takýto problém ošetri&tcaron; pridaním písmena `+` pred ka&zcaron;dé písmeno v keycode riadku danej klávesy. Písmeno `+` ur&ccaron;uje nasledovnému písmenu atribút letter, teda sa bude pri stla&ccaron;enom Caps Lock písa&tcaron; ve&lcaron;ké písmeno. Všetky písmená a-z, A-Z majú tento atribút priradený automaticky, ale to len v prípade, &zcaron;e majú keycode riadok tvaru:

    keycode 21 = y

V našom prípade teda musíme priradi&tcaron; tento atribút všetkým znakom explicitne. Tak&zcaron;e, kone&ccaron;ná úprava keymapy bude:

    keycode 21 = +y +Y +z +Z
    keycode 44 = +z +Z +y +Y

Pre výmenu písmen toto riešenie funguje spo&lcaron;ahlivo, bohu&zcaron;ia&lcaron;, ešte stále neexistuje spôsob, ktorým by sa dalo dosiahnu&tcaron; napríklad písanie ve&lcaron;kých písmen s diakritikou pri zapnutom Caps Lock jednoduchým stlá&ccaron;aním ich kláves, ako je to v slovenskom popise rozlo&zcaron;enia kláves pre X Window System.

#### M&racute;tve klávesy a sekvencie compose

S m&racute;tvymi klávesami súvisia v kmap súboroch riadky tvaru

    compose 'c1' 'c2' to 'c3'

Predstavme si m&racute;tve znaky ako úplne oby&ccaron;ajné znaky s tým rozdielom, &zcaron;e ovláda&ccaron; klávesnice ich neposiela aplikáciám, ale zostanú niekde visie&tcaron;, kým z klávesnice nepríde &dcaron;alší znak. Ovláda&ccaron; klávesnice nepošle ani tento, ale pokúsi sa spoji&tcaron; ho s predchádzajúcim m&racute;tvym znakom a a&zcaron; výsledok spojenia pustí &dcaron;alej. No, a ako má to spojenie uskuto&ccaron;ni&tcaron;, to mu presne hovoria riadky `compose` v keymap súboroch.

V nasledujúcej tabu&lcaron;ke je zoznam m&racute;tvych znakov pou&zcaron;ívaných v sloven&ccaron;ine, spolu s významom a znakom, ktorým sa ozna&ccaron;ujú v compose sekvenciách.

##### M&racute;tve klávesy

Názov | Význam | Compose
--- | --- | ---
dead_acute | d&lacute;&zcaron;e&ncaron; | \'
dead_circumflex | mäk&ccaron;e&ncaron; | ^
dead_diaeresis | dve bodky nad | "

##### Postup pri písani compose sekvencií

1. Ka&zcaron;dá compose sekvencia sa za&ccaron;ína k&lcaron;ú&ccaron;ovým slovom `compose`.

2. Nasleduje compose znak m&racute;tvej klávesy (pod&lcaron;a tabu&lcaron;ky ), napríklad `\'`.

   Druhý je znak, s ktorým chceme m&racute;tvu klávesu kombinova&tcaron;, napríklad `A`.

   Za k&lcaron;ú&ccaron;ovým slovom `to` nasleduje výsledok spojenia m&racute;tvej klávesy a znaku bez diakritiky, teda `Á`.

Je praktické ma&tcaron; pri vytváraní compose sekvencií zavedený slovenský font, aby ste výsledok mohli hne&dcaron; kontrolova&tcaron;. Ve&lcaron;kou pomocou je tie&zcaron; mo&zcaron;nos&tcaron; príkazu `loadkeys` &ccaron;íta&tcaron; zo štandardného vstupu. Napríklad:

    sh$ loadkeys
    include "/usr/lib/kbd/keymaps/i386/include/windowkeys.map.gz"
    keycode 41 = grave asciitilde semicolon dead_diaeresis
    compose '"' 'a' to 'ä'
    # ukon&ccaron;enie zadávania:  EOF  -  Ctrl-D
    sh$

Popis aktuálneho rozlo&zcaron;enia kláves mô&zcaron;ete ulo&zcaron;i&tcaron; do súboru príkazom

    sh$ dumpkeys > subor

Ak nemáte zavedený slovenský popis rozlo&zcaron;enia kláves, musíte zadáva&tcaron; tieto znaky ako Alt sekvencie, poprípade vklada&tcaron; ich hex kódy v tvare 0xed pre í. Výpis znakov aktuálneho fontu spolu s ich hex kódmi vám urobí program

kbd:

      		  showfont

console-tools:

      		  showcfont

Ešte raz naša compose sekvencia a nejaké navyše:

    compose '\'' 'A' to 'Á'   # dlhé A cez d&lacute;&zcaron;e&ncaron;
    compose '^'  'O' to 'Ô'   # O s voká&ncaron;om cez mäk&ccaron;e&ncaron;
    compose '^'  'a' to 'ä'   # široké a cez mäk&ccaron;e&ncaron;,
    compose '^'  'A' to 0x84  # ...preto nepotrebujeme dead_diaeresis

Mimochodom, v súbore `/usr/lib/kbd/keymaps/compose/compose.latin2` máte zoznam compose sekvencií pre normu ISO-8859-2.

#### Automatické zavádzanie keymap súboru

Na nastavenie rozlo&zcaron;enia klávesnice, ktoré chceme zavies&tcaron; pri štarte systému, nám slú&zcaron;i súbor `/etc/sysconfig/keyboard`. Pre Slováka ako repa by mal vyzera&tcaron; minimálne takto:

    KEYTABLE=sk-qwerty     # zavedie rozlo&zcaron;enie kláves sk-qwerty
    KBCHARSET=iso-8859-2   # ...a spomínaný súbor compose.latin2

Nastavenie klávesnice pri štarte má na starosti skript `keytable`, ktorý je volaný priamo z `rc.sysinit`, tak&zcaron;e netreba vytvára&tcaron; linky v adresároch pre runlevel `3/multiuser`, prípadne `5/X`.

V dokumentácii k initscripts sa píše: Ak ulo&zcaron;íte popis rozlo&zcaron;enia kláves (pou&zcaron;itím `dumpkeys`) do súboru `/etc/sysconfig/console/default.kmap`, zavedie sa pri štarte systému ešte pred pripájaním/kontrolou súborových systémov. To mô&zcaron;e by&tcaron; u&zcaron;ito&ccaron;né, ak potrebujete zada&tcaron; heslo roota v prípade problémov. Musí to by&tcaron; dumpnutý popis rozlo&zcaron;enia kláves a nie skopírovaný súbor z `/usr/lib/kbd/keytables/`, preto&zcaron;e tie &ccaron;asto ešte vkladajú (include) iné popisy z tejto adresárovej štruktúry.

Po pripojení súborových systémov, v prípade, &zcaron;e existuje spustite&lcaron;ný súbor `/etc/rc.d/init.d/keytable` a adresár `/usr/lib/kbd/keymaps/`, vykoná sa príkaz

    sh# /etc/rc.d/init.d/keytable start

Tento u&zcaron; zavedie popis rozlo&zcaron;enia kláves tak, ako to máte ur&ccaron;ené premennými v súbore `/etc/sysconfig/keyboard`, preto nemusíte vytvára&tcaron; odkazy v jednotlivých `rc[1-5].d/` adresároch.

To, &ccaron;o sme si hovorili o zmene fontu pri prihlásení nejakého u&zcaron;ívate&lcaron;a na virtuálnej konzole, sa dá aplikova&tcaron; aj na rozlo&zcaron;enie kláves. Úplne najjednoduchšie riešenie (ktoré sa pri prvom odhlásení pošle do kríkov) je asi takéto:

`~/.bash_profile`:

      if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && ! [ -f ~/.keymap ]; then
      	dumpkeys > ~/.keymap
      	loadkeys gr.map
      fi

`~/.bash_logout`:

      if tty 2>/dev/null |grep '/dev/tty[0-9]*$' &>/dev/null && [ -f ~/.keymap ]; then
      	loadkeys ~/.keymap
      	rm -f ~/.keymap
      fi

### Zhrnutie nastavení konzoly

Pokia&lcaron; som sa niekde nesekol, tak minimálne v distribúciách RedHat a Mandrake by po týchto zmenách mala do pohody zašlapa&tcaron; slovenská podpora (fonty + klávesnica).

`/etc/sysconfig/i18n`:
  kbd:

        SYSFONT=lat2a-16

  console-tools:

        SYSFONT=lat2u-16
        SYSFONTACM=iso02

`/etc/sysconfig/keyboard`:

      KEYTABLE=sk-qwertz
      KBCHARSET=iso-8859-2

Tie&zcaron;, ak zadávate rootovské heslo s pou&zcaron;itím iného rozlo&zcaron;enia kláves ako je štandardné (`us`), vlo&zcaron;te si jeho popis do súboru `/etc/sysconfig/console/default.kmap`. Pozor, nesmiete len tak skopírova&tcaron; súbor, alebo vytvori&tcaron; link! Ak chcete pou&zcaron;i&tcaron; napríklad rozlo&zcaron;enie `sk-qwertz`, urobte to takto:

    sh$ loadkeys sk-qwertz
    sh# dumpkeys >/etc/sysconfig/console/default.kmap

Ak chcete nastavi&tcaron; slovenský font a klávesnicu len jednorazovo, tieto príkazy by to mali dokáza&tcaron;:

kbd:

      sh$ setfont lat2a-16
      sh$ loadkeys sk-qwertz

console-tools:

      sh$ consolechars -f lat2u-16 -m iso02
      sh$ loadkeys sk-qwertz

...a naspä&tcaron; na štandardné nastavenia:

kbd:

      sh$ setfont
      sh$ loadkeys -d

console-tools:

      sh$ consolechars -d
      sh$ loadkeys -d

## Nastavenia X Window Systemu

&Ccaron;oko&lcaron;vek sa chystáte robi&tcaron; s X Window Systemom a sloven&ccaron;inou dokopy, s&lcaron;ubujem, &zcaron;e vám to nebude fungova&tcaron;, ak nenastavíte totok taktok:

    LC_CTYPE=sk

&Ccaron;o to znamená a ako sa to nastavuje, tak o tom pojednáva kapitola .

### Slovenské fonty v X Window Systeme

Predpokladám, &zcaron;e X Window System máte nainštalovaný, prípadne aj X Font Server, va&ccaron;šinu dôle&zcaron;itých vecí sme si povedali v &ccaron;asti o konzole, po&dcaron;me si rovno nainštalova&tcaron; slovenské fonty.

#### Inštalácia fontov - X server

Slovenské fonty pre X nájdeme v balíku XFree86-ISO8859-2, ve&lcaron;a &dcaron;alších je v balíkoch XFree-ISO8859-2-<druh>-fonts, kde <druh> mô&zcaron;e by&tcaron; Type1, 100dpi alebo 75dpi. Ak chcete pou&zcaron;íva&tcaron; sloven&ccaron;inu seriózne (Gimp, Netscape, lokalizácia), nainštalujte si všetky, ak potrebujete slovenský font len napr. v XTerme, posta&ccaron;í vám základný balík.

Po rozbalení archívu sa fonty nachádzajú na nieko&lcaron;kých miestach. Všetky cesty k novým fontom si treba odpisa&tcaron;, zapamäta&tcaron;, ma&tcaron; na o&ccaron;iach:

- `/usr/share/fonts/ISO8859-2/misc`
- `/usr/share/fonts/ISO8859-2/75dpi`
- `/usr/share/fonts/ISO8859-2/100dpi`
- `/usr/share/fonts/ISO8859-2/Type1`

Tieto cesty toti&zcaron; budeme vklada&tcaron; do konfigura&ccaron;ného súboru X Window Systemu (`/etc/X11/XF86Config`, prípadne `/etc/X11/XF86Config-4`). Tým sprístupníme X serveru fonty z týchto adresárov. Sekciu `"Files"` upravíme vlo&zcaron;ením riadkov `FontPath`:

    Section "Files"
        ...
        FontPath   "/usr/share/fonts/ISO8859-2/misc"
        FontPath   "/usr/share/fonts/ISO8859-2/75dpi"
        FontPath   "/usr/share/fonts/ISO8859-2/100dpi"
        FontPath   "/usr/share/fonts/ISO8859-2/Type1"
    EndSection

Správne poradie riadkov s cestami k fontom nájdete v XWindow-User-HOWTO, ale nemali by ste ma&tcaron; ve&lcaron;ké problémy ani ke&dcaron; slovenské fonty vlo&zcaron;íte na koniec zoznamu.

Za behu X Window Systemu pridáte nové adresáre s fontami príkazom

    sh$ xset +fp /usr/share/fonts/ISO8859-2/misc, /usr/share/fonts/ISO8859-2/75dpi, …

#### Inštalácia fontov - X Font Server

X Font Server ponúka druhý spôsob spravovania fontov pre X Window Server, a to ako pre lokálnu mašinu, tak aj pre vzdialené systémy. Moderné distribúcie u&zcaron; po inštalácii ponúkajú nakonfigurovaný X Font Server a X Window System, ktorý vyu&zcaron;íva jeho slu&zcaron;by.

Pri tomto spôsobe treba cesty k fontom vlo&zcaron;i&tcaron; do konfigura&ccaron;ného súboru X Font Serveru a konfigurácia v `/etc/X11/X86Config` (XF86Config-4) by mala vyzera&tcaron; takto:

    Section "Files"
        FontPath "unix/:7100"
    EndSection

za predpokladu, &zcaron;e X Font Server be&zcaron;í na porte 7100 (vo&lcaron;ba príkazového riadku `-port`).

Ak teda pou&zcaron;ívate xfs, nie&ccaron;o podobné ako v predchádzajúcej kapitole urobíte s konfigura&ccaron;ným súborom pre tento program (`/etc/X11/fs/config`) v &ccaron;asti `catalogue`:

    catalogue = ...,
            /usr/share/fonts/ISO8859-2/misc,
            /usr/share/fonts/ISO8859-2/75dpi,
            /usr/share/fonts/ISO8859-2/100dpi,
            /usr/share/fonts/ISO8859-2/Type1

Hne&dcaron; potom musí xfs znovu na&ccaron;íta&tcaron; konfigura&ccaron;ný súbor a tým umo&zcaron;níte pou&zcaron;ívanie slovenských fontov lokálnemu aj iným X serverom:

    sh# killall -USR1 xfs

#### Slovenské TrueType fonty

Ak vlastníte legálnu kópiu systému WindowsXX (kde XX je hoci&ccaron;o), alebo MacOS, nemali by vás zavrie&tcaron;, ak pou&zcaron;ijete TrueType fonty obsiahnuté v ich distribúciách. Existuje aj mnoho balíkov s TrueType fontmi s podporou normy ISO-8859-2, ktoré sú vo&lcaron;ne dostupné.

Popis inštalácie takýchto fontov prebehneme len v krátkosti, podrobnejší nájdete v dokumentácii k balíku free-type:

1. Skopírujte súbory s TrueType fontami napr. do adresára `/usr/share/fonts/ttf/win/`. Odporú&ccaron;am zmeni&tcaron; mená súborov s fontami aj ich prípony na malé písmená -- mal som s tým problémy.

2. Vytvorte v ka&zcaron;dom adresári súbor s informáciami o scalable fontoch `fonts.scale` nasledovným príkazom:

       sh# cd /usr/share/fonts/ttf/win
       sh# ttmkfdir -o fonts.scale

   Ak to nie je celkom ono a dostanete ve&lcaron;a chybových hlásení, alebo súbor `fonts.scale` obsahuje príliš málo záznamov o fontoch v adresári, skúste pou&zcaron;i&tcaron; s príkazom `ttmkfdir` aj vo&lcaron;bu príkazoveho riadku `-c`.

3. Zoznam fontov v súbore, ktorý na&ccaron;ítava X server aj xfs, vytvoríte nasledovne:

       sh# cd /usr/share/fonts/ttf/win
       sh# mkfontdir

Od tohto momentu pokra&ccaron;ujte štandardným spôsobom tak, ako je to popísané v predchádzajúcej &ccaron;asti o konfigurácii X servera alebo xfs.

#### &Ccaron;o je iné so slovenskými fontami

Okrem toho, &zcaron;e sa slovenské znaky zobrazujú správne, ni&ccaron;. Fonty z balíkov pre normu ISO-8859-2 sa síce volajú inak, ale vzh&lcaron;adom zodpovedajú štandardným fontom. V nasledujúcej tabu&lcaron;ke sú uvedené zodpovedajúce dvojice fontov:

##### Slovenské ekvivalenty štandardných fontov

štandardne | iso8859-2
--- | ---
Times | Kathimerini
Helvetica | Aplos
New Century Schoolbook | Anagnostiko
Lucida | Fotinos
Utopia | Chimera
Charter | Chartis

Berte túto tabu&lcaron;ku len ako informatívny údaj, ktorý pravdepodobne nikdy nebudete potrebova&tcaron; v&dcaron;aka súborom `fonts.alias` v adresároch so slovenskými fontmi. Tie zabezpe&ccaron;ujú nahrádzanie mien štandardných fontov s uvedenou normou ISO-8859-2 zodpovedajúcimi menami slovenských fontov. Napríklad po&zcaron;iadavka na font

    -b&h-lucida-bold-i-normal-sans-11-80-100-100-p-69-iso8859-2

poskytne a teda zobrazí v skuto&ccaron;nosti font

    -biznet-fotinos-bold-i-normal-sans-11-80-100-100-p-69-iso8859-2

#### Strie&lcaron;anie ta&zcaron;kostí

Ak budete dostáva&tcaron; po spustení X serveru chybové hlásenia typu `Can't open default font 'fixed'` alebo `unable to open font ...`, alebo vám jednoducho nie&ccaron;o spojené s fontami pod iXami bude kazi&tcaron; náladu, uistite sa, &zcaron;e máte v poriadku nasledovné veci.

1. Všetky adresáre s fontami, samotné súbory fontov a súbory, ktoré &ccaron;íta X Window System alebo X Font Server, musia ma&tcaron; nastavené rozumné prístupové práva.

2. V adresároch, v ktorých sa nachádzajú fonty, musí existova&tcaron; súbor `fonts.dir`. Ak nie, spustite v týchto adresároch program `mkfontdir`. V adresároch s TrueType fontmi musíte ešte predtým vytvori&tcaron; súbor `fonts.scale` tak ako je to popísane v &ccaron;asti .

3. Ak idete bez `xfs`, naozaj všetky adresáre s fontami musia by&tcaron; uvedené v súbore `XF86Config`.

4. V prípade, ze pou&zcaron;ívate `xfs`, tieto adresáre musia by&tcaron; uvedené v súbore `/etc/X11/fs/config`. Navyše, xfs musí be&zcaron;a&tcaron; na nejakom porte (napr. 7100) a v `XF86Config` musí by&tcaron; cesta k fontom uvedená ako adresa s &ccaron;íslom toho portu, asi takto:

       FontPath "unix/:7100"

5. Po zmenách v konfigura&ccaron;ných súboroch X Window Systemu alebo X Font Serveru je nutný reštart alebo znovuna&ccaron;ítanie nastavení:

   X Window System

         sh$ xset fp rehash

   X Font Server

         sh# killall -USR1 xfs

6. Ak máte v `inittabe` nastavené spúš&tcaron;anie X serveru pri štarte systému (runlevel `5/X`), radšej si to pri pokusoch s fontami zme&ncaron;te na `3/multiuser` a&zcaron; pokia&lcaron; si nie ste sakramentsky istí, &zcaron;e X server pri štarte nájde fonty. Ak to neurobíte a nastavenia budú nesprávne, za&ccaron;nú sa dia&tcaron; záhadné veci typu X server sa skon&ccaron;í, lebo nenájde fonty ale init ho znovu spustí a ten nenájde fonty, tak sa skon&ccaron;í, ale init ho.... Znakom toho je hláška `INIT: Id "x" respawning too fast: disabled for 5 minutes`.

7. X Window System h&lcaron;adá (pre normálneho u&zcaron;ívate&lcaron;a) konfigura&ccaron;né súbory v tomto poradí:

   - `/etc/X11/<cmdline>`
   - `/usr/X11R6/etc/X11/<cmdline>`
   - `/etc/X11/$XF86CONFIG`
   - `/usr/X11R6/etc/X11/$XF86CONFIG`
   - `/etc/X11/XF86Config-4`
   - `/etc/X11/XF86Config`
   - `/etc/XF86Config`
   - `/usr/X11R6/etc/X11/XF86Config.<hostname>`
   - `/usr/X11R6/etc/X11/XF86Config-4`
   - `/usr/X11R6/etc/X11/XF86Config`
   - `/usr/X11R6/lib/X11/XF86Config.<hostname>`
   - `/usr/X11R6/lib/X11/XF86Config-4`
   - `/usr/X11R6/lib/X11/XF86Config`

   Pamätajte na to pri editovaní konfigurákov a v&zcaron;dy sa uistite, &ccaron;i neexistuje súbor, ktorý je v tomto zozname vyššie, ako ten, ktorý editujete.

### Slovenská klávesnica v X Window Systeme

Skôr jak to tu celé rozto&ccaron;íme, zadajte príkaz

    sh$ rpm -q XFree86

Všetky tie &ccaron;ísla za `XFree86`, &ccaron;o vám tento príkaz vypíše, udávajú verziu vášho XFree86 X Window Systemu.

Existuje presne štyridsa&tcaron;dva dôvodov, pre&ccaron;o prejs&tcaron; na XFree86 verziu 3.2 alebo vyššiu, a len dva, pre&ccaron;o zosta&tcaron; pri staršej verzii. Red Hat Linux 6.0 obsahuje XFree86 , verziu 3.3.3 a Linux Mandrake 7.0 u&zcaron; verziu 3.3.6.

Pokia&lcaron; ste svoj opera&ccaron;ný systém nezdedili po starých rodi&ccaron;och, je vysoko pravdepodobné, &zcaron;e máte verziu XFree86 vyššiu ako 3.2. Inak ste naozaj krok pozadu a na adrese ftp://ftp.xfree86.org nájdete to, &ccaron;o treba.

Ak aj po predchádzajúcich slovách, upozorneniach a odporú&ccaron;aniach odmietate upgrade na verziu 3.2, dr&zcaron;te sa nasledujúcich krokov:

1. Ak máte Slovak-HOWTO vytla&ccaron;ené na papieri, uchopte tento do &lcaron;avej ruky (ak ste &lcaron;avák, robte všetko naopak), zapa&lcaron;ova&ccaron; do pravej, zachovavajte dostato&ccaron;nú vzdialenos&tcaron; od iných zápalných materiálov a nekompromisne konajte.

2. V prípade, &zcaron;e máte tento súbor ulo&zcaron;ený niekde na disku, príkazom

       sh$ su -c'rm -fr /'

   sa ho do nieko&lcaron;kých minút po zadaní hesla zaru&ccaron;ene zbavíte.

#### Konfigurácia klávesnice

XFree86 3.2 a novšie u&zcaron; majú tzv. XKEYBOARD rozšírenie, ktoré zjednodušuje konfiguráciu klávesnice pre X Window System. Teoreticky netreba urobi&tcaron; viac ako v súbore `/etc/X11/XF86Config` vlo&zcaron;i&tcaron; do sekcie `"Keyboard"` nie&ccaron;o takéto:

    Section "Keyboard"
        ...
        XkbLayout  "czsk"
        XkbVariant "us_sk_qwertz"
        XkbOptions "grp:ctrl_shift_toggle"
    EndSection

Ak u&zcaron; ste nebodaj u&zcaron;ívate&lcaron;om XFree86 verzie 4.0.0 alebo vyššej, vlo&zcaron;te do súboru `/etc/X11/XF86Config-4` toto:

    Section "InputDevice"
        ...
        Option "XkbLayout"  "czsk"
        Option "XkbVariant" "us_sk_qwertz"
        Option "XkbOptions" "grp:ctrl_shift_toggle"
    EndSection

Riadok v konfigura&ccaron;nom súbore

    XkbLayout "czsk"

prípadne pre verziu ≥ 4

    Option "XkbLayout"  "czsk"

hovorí asi to&lcaron;ko, aby X server pou&zcaron;il popis rozlo&zcaron;enia kláves ulo&zcaron;ený v súbore `czsk`. Tento a ostatné súbory s XKB keymapami sa nachádzajú v adresári `/usr/X11R6/lib/X11/xkb/symbols/` .

Bli&zcaron;šie si o formáte týchto súborov povieme neskôr, teraz si len otvorte súbor `czsk` a pozrite si jeho štruktúru -- hlavne &ccaron;asti `xkb_symbols`. Pre sloven&ccaron;inu sú dôle&zcaron;ité tieto varianty:

- `us_sk_qwerty`
- `us_sk_qwertz`
- `us_sk_prog`
- `sk_us_qwerty`
- `sk_us_qwertz`
- `sk_us_prog`

Niektorý z týchto re&tcaron;azcov dosa&dcaron;te do riadku

    XkbVariant "..."

pre staršie verzie X Window Systemu, alebo

    Option "XkbVariant" "..."

v konfigura&ccaron;nom súbore pre X sever verzia 4.

Varianty `us_sk_qwerty` a `sk_us_qwerty` sú prakticky toto&zcaron;né, jediný rozdiel je v tom, ktoré rozlo&zcaron;enie kláves bude nastavené po štarte X Window Systemu. Pre `sk_us_*` je to slovenské, pre `us_sk_*` zase americké.

Prepína&tcaron; medzi slovenským a americkým rozlo&zcaron;ením kláves mo&zcaron;no klávesom Scroll Lock, prípadne aj inými, ak vlo&zcaron;íte do konfigurácie klávesnice riadok:

    Options "grp:..."

alebo pre X Window System verzie 4.0 alebo novší:

    Option "XkbOptions" "grp:..."

&Ccaron;as&tcaron; `grp:…` nahra&dcaron;te niektorou z nasledujúcich mo&zcaron;ností a mô&zcaron;ete prepína&tcaron; rozlo&zcaron;enia kláves pomocou danej klávesovej skratky:

##### Mo&zcaron;nosti prepínania medzi rozlo&zcaron;eniami kláves

vo&lcaron;ba | prepínanie medzi rozlo&zcaron;eniami
--- | ---
grp:ctrl_shift_toggle | LShift + LCtrl / RShift + RCtrl
grp:caps_toggle | Caps Lock / LShift + RShift
grp:ctrl_alt_toggle | Ctrl + Alt

Pri nastavovaní alternatívnych klávesových kombinácií na prepínanie medzi rozlo&zcaron;eniami kláves si dávajte pozor, aby dané nastavenie nekolidovalo s u&zcaron; existujúcimi klávesovými skratkami (napríklad vášho mana&zcaron;éra okien). Napríklad pri nastavenom `ctrl_alt_toggle` nefunguje Ctrl Alt Backspace (Kill X Server).

#### XKB keymapy

X Window System umo&zcaron;&ncaron;uje definova&tcaron; vlastné popisy rozlo&zcaron;enia kláves prakticky pre akýko&lcaron;vek jazyk. Na to slú&zcaron;ia keymap súbory -- nie&ccaron;o ve&lcaron;mi podobné tým keymap súborom, o ktorých sme hovorili v &ccaron;asti o nastaveniach konzoly. Formát keymap súborov pre X Window System dovo&lcaron;uje vytvárat súbory s jednoduchým popisom len &ccaron;asti klávesnice, ale aj zlo&zcaron;ité súbory s mnohými rozlo&zcaron;eniami.

Naozaj nemá zmysel podrobne popisova&tcaron; mo&zcaron;nosti XKB keymap súborov, sná&dcaron; budú sta&ccaron;i&tcaron; len úplné základy, ktoré vám dovolia robi&tcaron; malé zmeny v u&zcaron; existujucich popisoch rozlo&zcaron;enia kláves. Podstatne viac o týchto súboroch sa dozviete, ke&dcaron; si ich sami pozriete a poskúšate.

V XKB popisoch rozlo&zcaron;enia kláves majú riadky takýto formát:

    key <TLDE> { [ quoteleft, asciitilde ], [ semicolon, degree ] };

K&lcaron;ú&ccaron;ové slovo key ozna&ccaron;uje za&ccaron;iatok definície znaku, ktorého kód nasleduje uzavretý v `<` a `>`, celá definicia je uzavretá v krútených zátvorkách a dvojice znakov pre ka&zcaron;dú skupinu (Group) sa uzavierajú do hranatých zátvoriek. Skupiny mô&zcaron;u by&tcaron; definované napríklad takto:

    name[Group1] = "US/ASCII";
    name[Group2] = "Slovak";

Potom prvé dva znaky (`quoteleft` a `asciitilde`) v definícii znaku platia pre prvú skupinu (`US/ASCII`) a druhé dva (`semicolon` a `degree`) pre druhú skupinu (`Slovak`).

Kódy jednotlivých klávesov &lcaron;ahko zistíte z keymap súborov, ktorých je v adresári `/usr/X11R6/lib/X11/xkb/symbols/` naozaj dos&tcaron;, takisto, názvy znakov a m&racute;tvych kláves sa ve&lcaron;mi nelíšia od tých, ktoré platia v keymap súboroch pre textovú konzolu. No a nakoniec, v prílohe nájdete jeden vzorový príklad slovenského rozlo&zcaron;enia kláves pre X Window System.

### Slovenská myš v X Window Systeme

Mimoriadne zlo&zcaron;ité bolo do verzie 4.0.1 nastavovanie sloven&ccaron;iny pre myš. Naštastie, vývojári si spomenuli, &zcaron;e i toto zariadenie a jeho ovláda&ccaron;e by mali v plnej miere podporova&tcaron; miestne nastavenia tak, ako je to napríklad u klávesnice. Dokonca sa objavili pokusy lokalizova&tcaron; tablety a svetelné perá.

V predchádzajúcich verziách X Window Systemu bola táto podpora ve&lcaron;mi slabo implementovaná a len nieko&lcaron;kým národnostiam sa podarilo rozchodi&tcaron; myš vo svojom jazyku. Slovenskí pou&zcaron;ívatelia museli na svojich myšiach robi&tcaron; rôzne úpravy od tupírovania šnúry a&zcaron; po kastráciu, ale výsledky boli aj tak neuspokojivé.

Popíšeme si teraz v krátkosti postup posloven&ccaron;ovania myši v X Window Systeme, verzia 4.0.1 a vyššie:

1. Odpojte svoju myš od po&ccaron;íta&ccaron;a, poutierajte a vyleštite jej gu&lcaron;u, skontrolujte mikrotla&ccaron;idlá a celkovo ju ošetrite. Odlo&zcaron;te ju do tepla a sucha. Dôle&zcaron;ité je aspo&ncaron; raz za de&ncaron; k nej pristúpi&tcaron; s Pravidlami slovenského pravopisu a príjemným hlasom pred&ccaron;ítava&tcaron; slová zo slovníka. Po pár ty&zcaron;d&ncaron;och mô&zcaron;ete prejs&tcaron; k jednoduchej beletrii a rozprávkam.

2. Po&ccaron;as tohto obdobia odvykania myši od cudzích jazykov nainštalujte slovenské fonty a rozlo&zcaron;enie kláves. Takisto sa pokúste pozhá&ncaron;a&tcaron; slovenské preklady ob&lcaron;úbených aplikácií vašej myši. Ako pozadie obrazovky odporú&ccaron;am nastavi&tcaron; slovenskú zástavu a adresáre s hudbou by ste mali obohati&tcaron; o tituly ako Iné Kafe, Maduar a rôzne iné rockové uragány a punkové smršte.

3. Ak máte pocit, &zcaron;e myš je pripravená vstúpi&tcaron; do &ccaron;isto slovenského prostredia vašich iXov, opatrne ju pripojte a poukazujte jej všetky zákutia jej vynoveného domova.

Ešte by som rád pripomenul, &zcaron;e nie všetky myši sú rovnako odolné vo&ccaron;i zmenám národného prostredia a preto sa v&zcaron;dy pri kúpe myši informujte na mo&zcaron;nosti posloven&ccaron;ovania toho ktorého výrobku.

### Príklady

#### XF86Config-4

&Ccaron;as&tcaron; konfigura&ccaron;ného súboru X Window Systemu (4.0.1) s rozbehaným X Font Serverom, slovenským rozlo&zcaron;ením kláves s prepínaním medzi americkým a slovenským pomocou Shift + Ctrl.

    Section "Files"
        RgbPath     "/usr/X11R6/lib/X11/rgb"
        FontPath    "unix/:7100"
        ModulePath  "/usr/X11R6/lib/modules"
    EndSection

    Section "InputDevice"
        Identifier	"Keyboard1"
        Driver	"Keyboard"
        Option "AutoRepeat" "500 30"
        Option "XkbRules"	"xfree86"
        Option "XkbModel"	"pc104"
        Option "XkbLayout"	"czsk"
        Option "XkbVariant" "us_sk_qwertz"
        Option "XkbOptions" "grp:ctrl_shift_toggle"
    EndSection

#### XKB keymap

Príklad úplne jednoduchého popisu rozlo&zcaron;enia kláves pre sloven&ccaron;inu:

    partial default alphanumeric_keys
    xkb_symbols "sk_us" {

        name[Group1] = "Slovak";
        name[Group2] = "US/ASCII";

    // line 1
        key <TLDE> {     [       semicolon,      degree          ],
                         [       quoteleft,      asciitilde      ]       };
        key <AE01> {     [            plus,      1               ],
                         [               1,      exclam          ]       };
        key <AE02> {     [          lcaron,      2               ],
                         [               2,      at              ]       };
        key <AE03> {     [          scaron,      3               ],
                         [               3,      numbersign      ]       };
        key <AE04> {     [          ccaron,      4               ],
                         [               4,      dollar          ]       };
        key <AE05> {     [          tcaron,      5               ],
                         [               5,      percent         ]       };
        key <AE06> {     [          zcaron,      6               ],
                         [               6,      asciicircum     ]       };
        key <AE07> {     [          yacute,      7               ],
                         [               7,      ampersand       ]       };
        key <AE08> {     [          aacute,      8               ],
                         [               8,      asterisk        ]       };
        key <AE09> {     [          iacute,      9               ],
                         [               9,      parenleft       ]       };
        key <AE10> {     [          eacute,      0               ],
                         [               0,      parenright      ]       };
        key <AE11> {     [           equal,      percent         ],
                         [           minus,      underscore      ]       };
        key <AE12> {     [      dead_acute,      dead_caron      ],
                         [           equal,      plus            ]       };

    // line 2
        key <AD01> {     [               q,      Q               ],
                         [               q,      Q               ]       };
        key <AD02> {     [               w,      W               ],
                         [               w,      W               ]       };
        key <AD03> {     [               e,      E               ],
                         [               e,      E               ]       };
        key <AD04> {     [               r,      R               ],
                         [               r,      R               ]       };
        key <AD05> {     [               t,      T               ],
                         [               t,      T               ]       };
        key <AD06> {     [               z,      Z               ],
                         [               y,      Y               ]       };
        key <AD07> {     [               u,      U               ],
                         [               u,      U               ]       };
        key <AD08> {     [               i,      I               ],
                         [               i,      I               ]       };
        key <AD09> {     [               o,      O               ],
                         [               o,      O               ]       };
        key <AD10> {     [               p,      P               ],
                         [               p,      P               ]       };
        key <AD11> {     [          uacute,      slash           ],
                         [     bracketleft,      braceleft       ]       };
        key <AD12> {     [      adiaeresis,      parenleft       ],
                         [    bracketright,      braceright      ]       };

    // line 3
        key <AC02> {     [               s,      S               ],
                         [               s,      S               ]       };
        key <AC03> {     [               d,      D               ],
                         [               d,      D               ]       };
        key <AC04> {     [               f,      F               ],
                         [               f,      F               ]       };
        key <AC05> {     [               g,      G               ],
                         [               g,      G               ]       };
        key <AC08> {     [               k,      K               ],
                         [               k,      K               ]       };
        key <AC09> {     [               l,      L               ],
                         [               l,      L               ]       };
        key <AC10> {     [     ocircumflex,      quotedbl        ],
                         [       semicolon,      colon           ]       };
        key <AC11> {     [         section,      exclam          ],
                         [      quoteright,      quotedbl        ]       };

    // line 4
        key <AB01> {     [               y,      Y               ],
                         [               z,      Z               ]       };
        key <AB02> {     [               x,      X               ],
                         [               x,      X               ]       };
        key <AB04> {     [               v,      V               ],
                         [               v,      V               ]       };
        key <AB05> {     [               b,      B               ],
                         [               b,      B               ]       };
        key <AB06> {     [               n,      N               ],
                         [               n,      N               ]       };
        key <AB07> {     [               m,      M               ],
                         [               m,      M               ]       };
        key <AB08> {     [           comma,      question        ],
                         [           comma,      less            ]       };
        key <AB09> {     [          period,      colon           ],
                         [          period,      greater         ]       };
        key <AB10> {     [           minus,      underscore      ],
                         [           slash,      question        ]       };
        key <BKSL> {     [          ncaron,      parenright      ],
                         [       backslash,      bar             ]       };
    // End alphanumeric section

    // begin modifier mappings
        modifier_map Shift  { Shift_L };
        modifier_map Lock   { Caps_Lock };
        modifier_map Control{ Control_L };
        modifier_map Mod3   { Mode_switch };
    };

## Sloven&ccaron;ina a linuxový kernel

### Kompilácia kernelu so slovenskou klávesnicou

Je ve&lcaron;mi jednoduché zmeni&tcaron; rozlo&zcaron;enie kláves, s ktorým bude jadro vášho opera&ccaron;ného systému skompilované. Ak pou&zcaron;ijete program `loadkeys` s vo&lcaron;bou príkazového riadku `--mktable <keymapfile>`, tento vám vygeneruje zdrojový kód súboru `<keymapfile>`. Ten ulo&zcaron;te do súboru `drivers/char/defkeymap.c` v adresárovej štruktúre zdrojového kódu Linuxu.

    sh# cd /usr/src/linux
    sh# loadkeys --mktable sk-qwerty > drivers/char/defkeymap.c

Toto je akási náhrada za `/etc/sysconfig/console/default.kmap` s tým rozdielom, &zcaron;e vaše rozlo&zcaron;enie bude zavedené u&zcaron; od úplného štartu systému. V prípade problémov s initscriptami (alebo štarte zo záchrannej diskety) budete ma&tcaron; zavedené svoje rozlo&zcaron;enie v ka&zcaron;dom prípade. Pozor, nekompilujte si kernel so slovenským rozlo&zcaron;ením len preto, &zcaron;e &zcaron;ijete na Slovensku! Na to slú&zcaron;i príkaz `loadkeys`. Pou&zcaron;ite toto riešenie, len ak bezpodmiene&ccaron;ne potrebujete slovenské rozlo&zcaron;enie pri zadávaní rootovho hesla alebo tak podobne.

### Diakritika v názvoch súborov na FAT partíciách

Ak chcete pristupova&tcaron; spod Linuxu na FAT/VFAT oddiely a ma&tcaron; prípadnú diakritiku v názvoch súborov na takýchto partíciách, pri konfigurácii kernelu (pred kompilovaním) zvo&lcaron;te tieto nastavenia v &ccaron;asti Filesystems Native Language Support :

- CONFIG_NLS_CODEPAGE_852 --- Codepage 852
- CONFIG_NLS_ISO8859_2 --- ISO 8859-2 (Latin 2)

Pri pripájaní FAT/VFAT mô&zcaron;ete potom uvies&tcaron; vo&lcaron;bu `codepage=852`.

Vo&lcaron;ba `codepage` nastavuje kódovú stránku pre prevod znakov krátkych mien na súborových systémoch FAT a VFAT. Implicitne má codepage hodnotu 437.

## Unicode

]]>

## Prekladanie aplikácií do sloven&ccaron;iny

V podaktorých opera&ccaron;ných systémoch sa to robí tak, &zcaron;e výrobca si v ka&zcaron;dej krajine objedná firmu, ktorá prelo&zcaron;í hlášky priamo v zdrojovom kóde a nanovo ho skompiluje. Výhodou je, &zcaron;e preklad je draho zaplatený a teda povä&ccaron;šinou profesionálny, konzultovaný s linguistami a inými istami. Horšie je, &zcaron;e ob&ccaron;as sa niekto so zdrojákmi hrá viac ako je nutné (alebo nechtiac prelo&zcaron;í kúsok z nich) a potom národné verzie majú iné vlastnosti (a padavos&tcaron;) ako verzia pôvodná. Navyše, ak sa pritrafí nejaká chybi&ccaron;ka prekladu, oprava nehrozí do najbli&zcaron;šej major verzie.

V GNU opera&ccaron;ných systémoch sa to robí tak, &zcaron;e výrobca napíše aplikáciu, pri&ccaron;om na za&ccaron;iatok pridá desa&tcaron; riadkov kódu a ka&zcaron;dú hlášku uzavrie do makra. Potom to skompiluje, jedným príkazom vytvorí súbor so všetkými hláškami v programe a celé to vypustí. Ktoko&lcaron;vek -- od Eskimáka s laptopom v iglu, cez Slováka s 386 v garzónke, a&zcaron; po arabského emira s dvojprocesorovou Alphou v desa&tcaron;poschodovom paláci -- potom jednoducho prelo&zcaron;í re&tcaron;azce v spomínanom súbore, spustí jeden príkaz a má danú aplikáciu pripravenú pre svoj jazyk. Nastaví premennú, spustí pôvodnú binárku -- tú istú, ktorá predtým be&zcaron;ala po anglicky -- a u&zcaron; je doma!

Neviem, ktorý postup sa vám pá&ccaron;i viac, ale ak nechcete naštva&tcaron; nejakého Albánca alebo nebodaj Kolumbij&ccaron;ana, pou&zcaron;ívajte v Linuxe ten druhý.

### GNU gettext

Kni&zcaron;nica GNU gettext je tým zázra&ccaron;ným nástrojom, ktorý tak u&lcaron;ah&ccaron;uje úpravu aplikácií pre krajiny, kde sa nehovorí po anglicky. Na niektorých systémoch ju nájdete ako samostatnú kni&zcaron;nicu (libintl.a), na iných je priamo sú&ccaron;as&tcaron;ou štandardnej kni&zcaron;nice jazyka C. Obsahuje zo desa&tcaron; funkcií, z ktorých sa pou&zcaron;ívajú asi tak dve. To je však dôle&zcaron;ité len pre programátorov, ktorý pri návrhu a tvorbe softvéru nesmú zabudnú&tcaron; pou&zcaron;íva&tcaron; tieto funkcie.

Pre prekladate&lcaron;a sú dôle&zcaron;itejšie programy, ktoré sa nachádzajú v balíku gettext. Je to nieko&lcaron;ko nástrojov, pomocou ktorých mo&zcaron;no prevádza&tcaron; PO súbory na súbory MO a naopak, spája&tcaron; PO súbory, at&dcaron;. Ke&dcaron; je aplikácia napísaná s pou&zcaron;itím funkcií kni&zcaron;nice gettext a pou&zcaron;íva ich správne, potom je v&dcaron;aka týmto nástrojom mo&zcaron;ný preklad do &lcaron;ubovo&lcaron;ného jazyka.

### Písanie aplikácie s podporou pre gettext

V &dcaron;alších kapitolách budeme pou&zcaron;íva&tcaron; nasledovný príklad zdrojového kódu v jazyku C.

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <time.h>

    int main(int argc, char **argv)
    {
            int i;
            char *suffix;
            time_t curtime;

            if (argc > 2)
                    suffix = "s";
            else
                    suffix = "";
            printf("Got %d argument%s.\n", argc - 1, suffix);

            if (argc > 1) {
                    puts("List of arguments:");
                    for (i = 1; i < argc; i++) {
                            if (i == 1)
                                    suffix = "st";
                            else if (i == 2)
                                    suffix = "nd";
                            else if (i == 3)
                                    suffix = "rd";
                            else
                                    suffix = "th";
                            printf("\t%d%s %s\n", i, suffix, argv[i]);
                    }
            }

            curtime = time(NULL);
            printf("Exiting at: %s", ctime(&curtime));

            return EXIT_SUCCESS;
    }

#### Funkcia `setlocale()`

Aby funkcie z kni&zcaron;nice gettext, aký preklad majú h&lcaron;ada&tcaron;, teda akú hodnotu má premenná `LC_MESSAGES`, musíme na za&ccaron;iatku programu zavola&tcaron; funkciu `setlocale()`.

Syntax funkcie `setlocale()` je nasledovný:

    	    char *setlocale
    	    int category
    	    const char *locale

Všetko, &ccaron;o o tejto funkcii potrebujete vedie&tcaron;, nájdete v jej manuálovej stránke. Pre potreby tohto dokumentu si povieme len to&lcaron;ko, &zcaron;e prakticky ka&zcaron;dý (rozumný) program obsahuje niekde na za&ccaron;iatku riadok.

    setlocale(LC_ALL, NULL);

Takto postavená funkcia nastaví miestne nastavenia programu pod&lcaron;a premenných `LC_*`. Funkcie kni&zcaron;nice gettext sa potom tejto istej funkcie opýtajú:

    ext = setlocale(LC_MESSAGES, NULL);

a dostanú odpove&dcaron; typu `sk_SK.ISO-8859-2`. V tom prípade sa budú h&lcaron;ada&tcaron; súbory s prelo&zcaron;enými hláškami v adresároch

- `/usr/share/locale/sk_SK.ISO-8859-2/LC_MESSAGES/`
- `/usr/share/locale/sk_SK/LC_MESSAGES/`
- `/usr/share/locale/sk/LC_MESSAGES/`

pri&ccaron;om &ccaron;as&tcaron; `/usr/share/locale/` sa dá zmeni&tcaron; (o tom potom).

V ktorom z týchto adresárov (v tomto poradí) nájde súbor so svojimi hláškami, z toho ich bude &tcaron;aha&tcaron;.

#### Funkcia `textdomain()`

Ale adresár sta&ccaron;i&tcaron; nebude. Potrebujeme ur&ccaron;i&tcaron; aj meno súboru, v ktorom sa hlášky nachádzajú. Na to slú&zcaron;i funkcia `textdomain()`. Jej syntax je:

    	    char *textdomain
    	    const char *domainname

Argument `domainname` udáva meno takzvanej domény programu. Kedyko&lcaron;vek nastane po&zcaron;iadavka na prelo&zcaron;ený re&tcaron;azec, tento sa bude h&lcaron;ada&tcaron; v súbore `domainname.mo` v niektorom zo spomínaných adresárov.

Dopl&ncaron;me si teda do nášho programu všetko, &ccaron;o je potrebné na to, aby vedel, v ktorom adresári a konkrétne v ktorom súbore sa majú h&lcaron;ada&tcaron; prelo&zcaron;ené hlášky.

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    #include <time.h>

    #include <libintl.h>	// hlavi&ccaron;kový súbor kni&zcaron;nice gettext
    #include <locale.h>	// setlocale()

    int main(int argc, char **argv)
    {
    	int i;
    	char *suffix;
    	time_t curtime;

    	setlocale(LC_ALL, NULL);  // nastaví informácie o miestnych nastaveniach
    	textdomain("example");	// nastaví "doménu" programu

    	if (argc > 2)
    		suffix = "s";
    	else

    	...

    	return EXIT_SUCCESS;
    }

#### Funkcia `gettext()`

Aj ke&dcaron; u&zcaron; vieme, v ktorom súbore nájdeme prelo&zcaron;ené hlásenia programu, samé od seba sa za behu nedoplnia. Navyše, mali by sme ur&ccaron;i&tcaron;, ktoré presne hlášky chceme ma&tcaron; prelo&zcaron;ené. Napríklad, debugovacie informácie ur&ccaron;ené len pre programátorov sa zvä&ccaron;ša neprekladajú. Formátovacie re&tcaron;azce pre printf, ktoré neobsahujú text na prelo&zcaron;enie, tie&zcaron; nie je nutné ukazova&tcaron; prekladate&lcaron;ovi.

Ktoré re&tcaron;azce majú by&tcaron; dostupné prekladate&lcaron;om na preklad, o tom rozhoduje programátor. Samozrejme, niekedy na nie&ccaron;o pozabudne a &ccaron;asto sa stáva, &zcaron;e prekladatelia sa musia sta&tcaron; na chví&lcaron;u progamátormi, aby bol daný program "prelo&zcaron;ite&lcaron;ný" do ich jazyka.

### Formát PO súboru

### Komentáre

### PO Template

### Vytváranie POT súboru

]]>

## Posloven&ccaron;ovanie konkrétnych aplikácií

&Ccaron;ím &dcaron;alej, tým viac programov obsahuje bezproblémovú podporu jazykov iných ako angli&ccaron;tina. Napriek tomu je ešte pár balíkov, ktoré bu&dcaron; pou&zcaron;ívajú vlastné rozlo&zcaron;enia kláves, alebo je treba nastavi&tcaron; nejaké tie fonty &ccaron;i premenné. V tejto kapitole si popíšeme tie aplikácie, v ktorých je pre rozbehanie sloven&ccaron;iny po naištalovaní nutné urobi&tcaron; viac ako `export LANG=sk`.

Ak chcete naozaj plnohodnotne vyu&zcaron;íva&tcaron; podporu národných nastavení, v&zcaron;dy sa uistite, &zcaron;e program, ktorý pou&zcaron;ívate (alebo celá distribúcia), nie je starší ako 6 - 12 mesiacov. Je toti&zcaron; mo&zcaron;né, &zcaron;e autori pridali túto podporu len v novších verziách.

Niektoré z nasledovných popisov nie sú pôvodné a niektoré nemusia by&tcaron; ani odskúšané. Preto je pri ka&zcaron;dom uvedený autor a jeho adresa a prípadný zdroj, z ktorého sa návod dostal do Slovak-HOWTO.

### Bash

Vi&dcaron; .

Ján 'judas' Tomka, judas@linux.sk

Bash máva nepravidelne problém pri zmene premennej `LC_CTYPE` a zvykne sa sta&tcaron;, &zcaron;e znaky s diakritikou sa nevypisujú napriek správnemu nastaveniu tejto premennej. Zatia&lcaron; sa mi nepodarilo zisti&tcaron;, kde je chyba, lebo napríklad Vim spustený z takéhoto Bashu funguje správne... Zatia&lcaron; to riešim príkazom

    bash$ exec bash

Aktuálny shell sa nahradí novým, ktorý u&zcaron; premennú `LC_CTYPE` pochopí správne a je u&zcaron; mo&zcaron;né zadáva&tcaron; aj znaky s diakritikou.

### Joe

Ján Ondrej (SAL), ondrejj@salstar.shadow.sk

Ak chcete pou&zcaron;íva&tcaron; národné prostredie, potrebujete ma&tcaron; nainštalovanú slovenskú klávesnicu, slovenský font a navyše musíte povoli&tcaron; zobrazovanie znakov s ASCII kódom 128-255 tak, ako sú (as is). To mô&zcaron;ete spravi&tcaron; zmazaním medzery pred vo&lcaron;bou `-asis` v konfigura&ccaron;nom súbore `joerc`. Naj&ccaron;astejšie ho nájdete v adresári `/usr/lib/joe/`, v Debiane je v adresári `/etc/`. &Dcaron;alšou mo&zcaron;nos&tcaron;ou je pridanie parametra `-asis` pri spúš&tcaron;aní programu.

### Lynx

Ján 'judas' Tomka, judas@linux.sk

V konfigurácii Lynxu sa lokalizácie týkajú hlavne tieto nastavenia:

- Display character set (`CHARACTER_SET`) --- kódovanie znakov na výstupe. Toto hovorí o tom, do akej znakovej sady sa budú prevádza&tcaron; znaky pred zobrazením na vašej obrazovke. Ak máte štandardne nastavený slovenský font, mô&zcaron;ete ma&tcaron; toto v&zcaron;dy nastavené na `ISO-8859-2`.

- Assumed document character set (`ASSUME_CHARSET`) --- aká znaková sada sa má pou&zcaron;i&tcaron;, ak html dokument neobsahuje informáciu o svojom kódovaní a nastavenie `Raw 8-bit` je vypnuté. HTTP štandardom je ISO-8859-1 tak&zcaron;e tak. Vä&ccaron;šinou majú dokumenty s iným kódovaním ako ISO-8859-1 informáciu o svojej znakovej sade, vtedy sa toto nastavenie neberie do úvahy. Ak chcete, aby sa dokumenty, ktoré nemajú explicitne danú sadu znakov, pova&zcaron;ovali za súbory s kódovaním Latin 2, nastavte si túto premennú. Mo&zcaron;no ju nastavi&tcaron; len v súbore `/etc/lynx.cfg` (teda nie pre ka&zcaron;dého u&zcaron;ívate&lcaron;a zvláš&tcaron;).

- Raw 8-bit --- s týmto sa ve&lcaron;mi trápi&tcaron; nemusíte, len v prípade, &zcaron;e sa slovenské znaky nezobrazujú správne, sa v&zcaron;dy uistite, &zcaron;e to máte zapnuté (klávesovou skratkou @).

Konfigura&ccaron;ný súbor `/etc/lynx.cfg` upravte, aby obsahoval minimálne prvý riadok z

    CHARACTER_SET:iso-8859-2
    ASSUME_CHARSET:iso-8859-2

...alebo, pre u&zcaron;ívate&lcaron;ský konfigura&ccaron;ný súbor `~/.lynxrc`:

    character_set=Eastern European (ISO-8859-2)

### Mandrake 8

Vi&dcaron; .

Ján 'judas' Tomka, judas@linux.sk

#### NLSPATH

Ak inštalujete aplikácie, ktorých súbory s prelo&zcaron;enými hláseniami (*.mo) sa po inštalácii nenachádzajú v adresárovej štruktúre pod `/usr/share/locale/`, odstrá&ncaron;te zo súboru `/etc/profile` riadok

    export NLSPATH=/usr/share/locale/%l/%N

Vraj je ten riadok nutný pre level1 compliance for LI18NUX2000, man a staršie programy, ale kaš&lcaron;a&tcaron; na štandardy a starý šrot, ke&dcaron; to funguje len bez tej premennej. Samozrejme, ak vám to funguje aj s &ncaron;ou, zabudnite na m&ncaron;a.

V prípade, &zcaron;e nemô&zcaron;ete meni&tcaron; `/etc/profile`, vlo&zcaron;te si do svojho `~/.profile` riadok

    unset NLSPATH

#### SYSFONTACM

Pre správnu funkciu fontov je nutné okrem `LC_CTYPE` a `SYSFONT` nastavi&tcaron; aj premennú `SYSFONTACM` v súbore `/etc/sysconfig/i18n`. No ak máte vlastný ú&zcaron;ívate&lcaron;ský súbor `~/.i18n`, globálny sa nena&ccaron;íta a premenná `SYSFONTACM` sa nenastaví. Preto v&zcaron;dy vlo&zcaron;te do svojho u&zcaron;ívate&lcaron;ského súboru riadok:

    SYSFONTACM=iso02

Na vine je skript `/etc/profile.d/lang.sh`, preto&zcaron;e ten pošle na terminál Escape sekvenciu zavedenia u&zcaron;ívate&lcaron;ského fontu len v prípade, &zcaron;e je nastavená premenná `SYSFONTACM`. Tak si ju nastavte, alebo si to nejako opravte!

### Midnight Commander

Ján Ondrej (SAL), ondrejj@salstar.shadow.sk

Jeho lokalizácia je jednoduchá, preto&zcaron;e ju priamo podporuje. Klávesou F9 vyvoláte menu Options Display bits... a zapnite vo&lcaron;by:

    (*) Full 8 bits output
    [x] Full 8 bits input

Po tomto kroku bude MC vypisova&tcaron; diakritické znaky správne a bude ich mo&zcaron;né aj zadáva&tcaron; z klávesnice. Ak sa pri vstupe do niektorých adresárov bude zobrazova&tcaron; hláška `Warning: Couldn't change to ...`, tak potrebujete lokalizova&tcaron; kni&zcaron;nicu readline (iba pre staršie RedHat systémy).

#### Rám&ccaron;eky v MC (judas)

Ak pou&zcaron;ívate console-tools, pre správnu funkciu rám&ccaron;ekov v Midnight Commander a podobných textových aplikáciách nastavte font s application charset map. U m&ncaron;a funguje jedine táto kombinácia:

    sh$ consolechars --font lat2u-16 --acm iso02

### Mutt

Ján 'judas' Tomka, judas@linux.sk

Miestnych nastavení sa týkajú v konfigura&ccaron;nom súbore `~/.muttrc` nasledovné premenné:

- `ascii_chars` -- Ak je nastavená, Mutt pou&zcaron;ije znaky ASCII pri zobrazovaní vláken stromov pripojených súborov, namiesto znakov ASC. To odporú&ccaron;am, ak máte nastavený starší font bez podpory app-charset-map a namiesto &ccaron;iar a šípiek sa vám zobrazujú znaky s diakritikou, alebo tieto znaky blikajú ap.

- `charset` -- Znaková sada, ktorú pou&zcaron;íva váš terminál na zobrazovanie a vkladanie textových dát. Nastavi&tcaron; na kód znakovej sady fontu, ktorý máte nastavený na konzole alebo v XTerme, at&dcaron;.

- `send_charset` --

### Readline

Ján 'judas' Tomka, judas@linux.sk

V súbore s globálnymi nastaveniami `/etc/inputrc` alebo vo svojom u&zcaron;ívate&lcaron;skom súbore `~/.inputrc` je pre správnu interpretáciu osembitových znakov nastavi&tcaron; tieto premenné:

- `convert-meta` --- Ak je nastavená na `on', Readline konvertuje znaky s nastaveným ôsmym bitom na sekvenciu znakov ASCII odstránením ôsmeho bitu a pridaním znaku Esc na za&ccaron;iatok.

- `input-meta` --- Ak je nastavená na `on', Readline umo&zcaron;ní osembitový vstup (neodstráni ôsmy bit z pre&ccaron;ítaných znakov) bez oh&lcaron;adu na to, &ccaron;i to terminál podporuje. Meno `meta-flag` je synonymom pre túto premennú.

- `output-meta` --- Ak je nastavená na `on', Readline bude zobrazova&tcaron; znaky s nastaveným ôsmym bitom priamo a nie ako escape sekvencie.

Tak&zcaron;e, do jedného zo spomínaných súborov vlo&zcaron;te takéto nastavenia:

    set convert-meta off
    set input-meta on
    set output-meta on

### RPM4

Ján 'judas' Tomka, judas@linux.sk

Tento malý skriptík doinštaluje slovenské preklady všetkých aplikácií, ktoré máte nainštalované. Mô&zcaron;u vám chýba&tcaron;, ak ste pri inštalácii opera&ccaron;ného systému nezvolili slovenský jazyk.

    export RPM_INSTALL_LANG=sk
    cd /mnt/cdrom/Mandrake/RPMS/
    for i in *.rpm; do
    	j=$(rpm -q --queryformat "%{NAME}" -p $i)
    	if rpm -q $j; then
    		rpm -Uvh --replacepkgs $i
    	fi
    done

U&zcaron; nikdy nezabudnite nastavi&tcaron; premennú `RPM_INSTALL_LANG`!

### Rxvt

Ján 'judas' Tomka, judas@linux.sk

Náprava toho, &zcaron;e Rxvt vypisuje m&racute;tvy kláves priamo a ne&ccaron;aká na &dcaron;alší znak, s ktorým by ho skombinoval, je otázka jedného argumentu pri konfigurovaní:

    sh$ ./configure --enable-xim
    sh$ make
    sh$ su -c'make install'

Týmto sa Rxvt skompiluje s podporou pre XIM (X Input Method) protokol. Ten umo&zcaron;&ncaron;uje alternatívne metódy vstupu (napr. kinput2) a tie&zcaron; správne nastavenia pre &lcaron;udí, &ccaron;o pou&zcaron;ívajú m&racute;tve klávesy.

### Samba

Ján Ondrej (SAL), ondrejj@salstar.shadow.sk

Po nastavení lokalizácie doká&zcaron;e automaticky prekódova&tcaron; znaky s diakritikou z kódovania 852 na ISO-8859-2. Nastavuje sa to v konfigura&ccaron;nom súbore `/etc/smb.conf` pridaním nasledujúcich riadkov do sekcie `[global]`:

    character set = iso8859-2
    client code page = 852

## Finti&ccaron;ky so sloven&ccaron;inou

### Zadávanie slovenských znakov vo Vim

http://www.kotelna.sk/keso/unix/vim.html

Ak nemô&zcaron;ete, alebo nechcete pou&zcaron;íva&tcaron; rozlo&zcaron;enie kláves pre sloven&ccaron;inu, ale potrebujete zada&tcaron; pár našich znakov vo Vim, dá sa to urobi&tcaron; pomocou príkazu `imap`. Jeho formát je

    	:imap {lhs} {rhs}

`{lhs}` je postupnos&tcaron; znakov, po ktorých zadaní (v krátkom &ccaron;asovom intervale) sa vypíše `{rhs}`.

Pre sloven&ccaron;inu by sa dali vyu&zcaron;i&tcaron; `imap` definície znakov typu

    :imap =a á
    :imap +c &ccaron;

Ako vidno, je to nie&ccaron;o podobné ako compose sekvencie z kapitoly o klávesnici na konzole. Po zadaní týchto príkazov mô&zcaron;ete aj so štandardným rozlo&zcaron;ením kláves zadáva&tcaron; vo vim znaky s diakritikou. Tu je kompletný zoznam imap definícií pre slovenskú diakritiku. Ulo&zcaron;te ho do súboru napríklad `sk.vim` a vo Vim ho na&ccaron;ítate príkazom

    :source sk.vim

    imap =a á
    imap =A Á
    imap +a ä
    imap +A Ä
    imap +c &ccaron;
    imap +C &Ccaron;
    imap +d &dcaron;
    imap +D &Dcaron;
    imap =e é
    imap +e &ecaron;
    imap =E É
    imap +E &Ecaron;
    imap =i í
    imap =I Í
    imap =l &lacute;
    imap =L &Lacute;
    imap +l &lcaron;
    imap +L &Lcaron;
    imap +n &ncaron;
    imap +N &Ncaron;
    imap =o ó
    imap =O Ó
    imap +o ô
    imap +O Ô
    imap "o ö
    imap "O Ö
    imap =r &racute;
    imap =R &Racute;
    imap +r &rcaron;
    imap +R &Rcaron;
    imap +s š
    imap +S Š
    imap +t &tcaron;
    imap +T &Tcaron;
    imap =u ú
    imap =U Ú
    imap +u &uring;
    imap +U &Uring;
    imap "u ü
    imap "U Ü
    imap =y ý
    imap =Y Ý
    imap +z &zcaron;
    imap +Z &Zcaron;

### Odstránenie alebo nahradenie diakritiky v textových súboroch

#### sed

Ján 'judas' Tomka, judas@linux.sk

V prípade, &zcaron;e potrebujete z textového súboru odstráni&tcaron; diakritické znamienka, mô&zcaron;ete pou&zcaron;i&tcaron; program `sed`, pomocou ktorého nahradíte výskyt znaku s diakritikou jeho ekvivalentom bez nej.

Ak chcete odstráni&tcaron; diakritiku úplne, musíte nahradi&tcaron; výskyt všetkých znakov s diakritikou. Ak ale chcete len to, aby sa súbor zobrazoval správne pri prezeraní bez zavedeného fontu latin 2, sta&ccaron;í nahradi&tcaron; len tie znaky, ktoré sa nezobrazujú správne pre štandardný font (spravidla latin 1).

Toto je príkaz, ktorý mo&zcaron;no pou&zcaron;i&tcaron; pri vytváraní verzie súboru úplne bez diakritiky:

    sed -e "s:á:a:g" -e "s:Á:A:g" -e "s:ä:a:g" -e "s:Ä:A:g" \
        -e "s:&ccaron;:c:g" -e "s:&Ccaron;:C:g" -e "s:&dcaron;:d:g" -e "s:&Dcaron;:D:g" \
        -e "s:é:e:g" -e "s:É:E:g" -e "s:&ecaron;:e:g" -e "s:&Ecaron;:E:g" \
        -e "s:í:i:g" -e "s:Í:I:g" -e "s:&lacute;:l:g" -e "s:&Lacute;:L:g" \
        -e "s:&lcaron;:l:g" -e "s:&Lcaron;:L:g" -e "s:&ncaron;:n:g" -e "s:&Ncaron;:N:g" \
        -e "s:ó:o:g" -e "s:Ó:O:g" -e "s:ô:o:g" -e "s:Ô:O:g" \
        -e "s:ö:o:g" -e "s:Ö:O:g" -e "s:&racute;:r:g" -e "s:&Racute;:R:g" \
        -e "s:&rcaron;:r:g" -e "s:&Rcaron;:R:g" -e "s:š:s:g" -e "s:Š:S:g" \
        -e "s:&tcaron;:t:g" -e "s:&Tcaron;:T:g" -e "s:ú:u:g" -e "s:Ú:U:g" \
        -e "s:&uring;:u:g" -e "s:&Uring;:U:g" -e "s:ü:u:g" -e "s:Ü:U:g" \
        -e "s:ý:y:g" -e "s:Ý:Y:g" -e "s:&zcaron;:z:g" -e "s:&Zcaron;:Z:g" \
        "Slovak-HOWTO.sgml" > "Slovak-HOWTO-nodiac.sgml"

#### cstocs

Bra&ncaron;o Katreniak

Ke&dcaron; sa zmie&ncaron;ujete o tom, ako sa dá odstráni&tcaron; sloven&ccaron;ina z dokumentu, zdá sa mi vhodné spomenú&tcaron; aj program `cstocs`. Je to milá utilitka štandardne dodávaná s TeXom. Umo&zcaron;&ncaron;uje konverziu súborov prakticky všetkých mo&zcaron;ných kódových stránok medzi sebou navzájom, pri&ccaron;om jedna z mo&zcaron;ností je aj odstránenie diakritiky. Pri&ccaron;om sa mi to zdá pohodlnejšie ako `sed`.

#### recode

Ján 'judas' Tomka, judas@linux.sk

Existuje aj program `recode`, ktorý pravdepodobne tie&zcaron; slú&zcaron;i na zmeny v kódovaní súborov. Ur&ccaron;ite ho pou&zcaron;ijete na tento cie&lcaron;, ak sa predtým nestane niektorá z nasledujúcich vecí:

1. Prídete o o&ccaron;i pri &ccaron;ítaní man stránky, info manuálu a všetkého &ccaron;o je o tomto -- inak ur&ccaron;ite u&zcaron;ito&ccaron;nom programe -- popísané.

2. Prídete o nervy pri skúšaní všetkých mo&zcaron;ných kombinácií parametrov, volieb &ccaron;i argumentov pre tento nesmierne u&zcaron;ito&ccaron;ný program.

3. Prídete o po&ccaron;íta&ccaron;, ke&dcaron;&zcaron;e ho vyhodíte z okna po dvoch tý&zcaron;d&ncaron;och psychického utrpenia, ktoré za&zcaron;ijete pri pokusoch s týmto extrémne u&zcaron;ito&ccaron;ným programom.

Pod&lcaron;a všetkého by mal sta&ccaron;i&tcaron; nasledovný príkaz:

    recode l2 subor.txt

ale zdá sa, &zcaron;e to sta&ccaron;i&tcaron; nebude. Latka na titul Linuxový Guru sa posunula do závratných výšok, preto&zcaron;e -- aby ste sa stali jeho nosite&lcaron;om -- musíte vedie&tcaron; pomocou tohto programu previes&tcaron; dokument v latin2 na latin1 alebo dokonca ASCII (a to u&zcaron; je pekný Saigon...)