Kategória: Debian Linux

Zmenené: 28. august 2010

Nastavenie lokalizácie

Väčšina veľkých (rozšírených) distribúcií súčasnosti poskytuje lokalizované (národné) prostredie, ktoré je možné jednoducho zvoliť pri inštalácii a všetko funguje ako má. Čo však treba urobiť ak sa rozhodnete použiť menej rozšírenú distribúciu, či nepoužiť grafické prostredie?

Národné prostredie v konzole

Na správne fungovania lokalizácie je potrebný balík locales, ktorý je štandardne inštalovaný a jeho nastavenie robíte pri inštalácii systému. Pri nastavovaní tohoto balíka vyberáte aké locales (teda lokalizačné nastavenia a preklady) majú byť naištalované. Pre slovenčinu je vhodný výber sk_SK.UTF-8 UTF-8 alebo staršie sk_SK ISO-8859-2. Keďže je možné zvoliť viac ako jednu lokalizáciu a vzhľadom k neúplnosti slovenskej lokalizácie považujem za vhodné nainštalovať i české, a to cs_CZ.UTF-8 UTF-8, respektíve cs_CZ ISO-8859-2. V súčasnej dobe je lepšie vyberať variant jazyka s UTF-8, pretože to zjednoduší prepínanie jazykov. Po výbere jazyka nasleduje výber predvoleného jazyka systému, kde pre slovenčinu je treba vybrať možnosť sk_SK.UTF-8.

Varovanie

Je potrebné nainštalovať aj anglickú lokalizáciu, pretože mnohé programy v Perle na nej závisia. Budú síce fungovať aj bez nej, ale budú vypisovať správy o nastavovaní locales na C.

V prípade potreby je možné toto nastavenie kedykoľvek zmeniť zadaním v príkazovom riadku:

dpkg-reconfigure locales

Zmena nastavenia sa prejaví až po opätovnom prihlásení alebo po ručnom nastavení príslušných premenných. Aktuálne nastavenie lokalizácie si možno vypísať príkazom locale, ktorý vypíše aktuálne nastavenia:

LANG=sk_SK.UTF-8
LANGUAGE=sk_SK.UTF-8:cs_CZ.UTF-8
LC_CTYPE="sk_SK.UTF-8"
LC_NUMERIC="sk_SK.UTF-8"
LC_TIME="sk_SK.UTF-8"
LC_COLLATE="sk_SK.UTF-8"
LC_MONETARY="sk_SK.UTF-8"
LC_MESSAGES="sk_SK.UTF-8"
LC_PAPER="sk_SK.UTF-8"
LC_NAME="sk_SK.UTF-8"
LC_ADDRESS="sk_SK.UTF-8"
LC_TELEPHONE="sk_SK.UTF-8"
LC_MEASUREMENT="sk_SK.UTF-8"
LC_IDENTIFICATION="sk_SK.UTF-8"
LC_ALL=

Význam jednotlivých premenných je v locale(1), tu je význam len niektorých:

  • LC_CTYPE určuje klasifikáciu znakov (čo je a čo nie je znak) a konverziu veľkosti (š -> Š)
  • LC_COLLATE určuje poradie radenia (abecedne)
  • LC_TIME určuje formát dátumu a času
  • LC_NUMERIC určuje formát čísel (oddeľovače tisícov a desatinných miest)
  • LC_MESSAGES určuje formát správ programov (aj interaktívnych)
  • LC_ALL má prednosť pred všetkými premennými LC_* (prepisuje ich hodnotu)
  • LANG je použitá pre premenné LC_*, ktoré nemajú vlastnú hodnotu

Lokalizované prostredie systému sa nastavuje v /etc/environment prípadne v /etc/default/locale, avšak každý si môže toto nastavenie zmeniť vo svojej konfigurácii. Pre konzolu v konfiguračnom súbore shellu (~/.bash_login), pre X Window System najlepšie v ~/.xsession. Príklad nastavenia, v ktorom budú programy v slovenčine, ale ich správy budú vypisované v pôvodnom jazyku (zväčša angličtina):

export LC_MESSAGES=C
export LANG=sk_SK.UTF-8

V manuálovej stránke locale(1) budete márne hľadať význam premennej LANGUAGE. Je to rozšírenie GNU, ktoré umožňuje nastaviť viacjazyčný systém, moje nastavenie vyššie nastavuje systém tak, že najprv hľadá slovenské lokálky a ak ich nenájde potom skúsi české a ak nenájde ani tie, použije pôvodné texty programu. Nič Vám nebráni pridať si do tejto premennej i ďalšie jazyky.

Priorita premenných

  • LANGUAGE ovplyvňuje len LC_MESSAGES;
  • LC_ALL ovplyvňuje všetky premenné;
  • LC_* ovplyvňujú len samé seba;
  • LANG použité len na nenastavené.

Písma a klávesnica v konzole

Na nastavenie fontov a v klávesnice je pripravený balík console-setup. Pomocou tohoto balíka je možná konfigurácia klávesnice obdobným spôsobom ako v X Window, vrátane tzv. mŕtvy kláves, funkcie AltGr či Compose. Balík zároveň obsahuje konzolové písma s podporou mnohých jazykov s unifikovaným vzhľadom klasické VGA, zjednodušené Fixed, či čistejšie Terminus. Balík stačí nainštalovať, vo východzom nastavení pracoval vcelku správne. Ak však predsa len treby niečo zmeniť (napríklad Y/Z), stačí spustiť opätovnú konfiguráciu balíka pomocou:

dpkg-reconfigure console-setup

Ak používate Splashy, použitie tohoto balíka pokazí bootovaciu animáciu. Inou možnosťou sú balíky console-tools a console-data. Jeho nastavenie je v /etc/console-tools/config. Do tohoto súboru treba pridať:

SCREEN_FONT=lat2u-16
SCREEN_FONT_vc2=lat2u-16
SCREEN_FONT_vc3=lat2u-16
SCREEN_FONT_vc4=lat2u-16
SCREEN_FONT_vc5=lat2u-16
SCREEN_FONT_vc6=lat2u-16

Je to nastavenie písma pre každú virtuálnu konzolu, kto používa konzol menej alebo viac si tieto riadky môže prispôsobiť. Ďalšie konzolové fonty sú v adresári /usr/share/consolefonts/, takže si stačí vybrať.

O nastavenie klávesnice sa stará balík console-data a aj jeho nastavenie ste zvolili pri inštalácii. Ak je potrebné toto nastavenie zmeniť stačí v konzole spustiť:

dpkg-reconfigure console-data

a zvoliť si príslušné rozloženie klávenice (qwertz -> Slovak -> Standard). Zaujímavou voľbou je programátorská klávesnica (Programmer), ktorá kombinuje niektoré slovenské i anglické znaky. Ak je zvolená slovenská klávesnica, možno sa na anglickú klávesnicu prepnúť pomocou klávesy Pause (Break).

Oba tieto balíky obsahujú možnosť, ktorá nastavenie konzolových fontov nespustí, ak je použitý Splashy (to nie je chyba, ale vlastnosť), a teda nepokazí štartovaciu animáciu. V prípade potreby je potom možné spustiť v konzole štartovací skript pomocou:

/etc/init.d/console-screen.sh

ale ak Splashy nepoužívate, poslúži skoro rovnako dobre ako balík console-setup.

Národné prostredie v X Window

Pre správne zobrazovaie národných znakov v grafickom prostredí stačí mať nainštalované (prípadne v programe nastavené) správne písma, nižšie spomínané by mali postačovať (xfonts-* sú bitmapové písma, ttf-* sú truetypové).

  • xfonts-base
  • xfonts-75dpi
  • xfonts-100dpi
  • xfonts-intl-european
  • xfonts-terminus
  • ttf-dejavu
  • ttf-freefont

Voľba klávesnice v grafickom prostredí sa nastavuje jednak rôznymi nástrojmi nastavenia (napr. v Gnome, či KDE) ale východzie nastavenie je v konfiguračnom súbore X servera /etc/X11/xorg.conf, kde sekcia pre klávesnicu môže vyzerať takto:

Section "InputDevice"
  Identifier "Keyboard1"
  Driver     "kbd"
  Option     "CoreKeyboard"
  Option     "XkbRules"     "xorg"
  Option     "XkbModel"     "pc105"
  Option     "XkbLayout"    "sk,us"
#  Option     "XkbVariant"  "qwerty"
  Option     "XkbOptions"   "grp:shifts_toggle,grp_led:scroll,grp:switch,compose:menu"
EndSection

Takto nastavená klávesnica používa slovenské rozloženie, ktoré dokáže pomocou pravého Alt (AltGr) písať anglické znaky. trvalé prepnutie na druhú (ďalšiu) klávesnicu umožňuje súčasné stlačenie oboch Shift a toto prepnutie je indikované LEDkou ScrollLock. Pre voľbu inej kombinácie prepínania klávesníc možno použiť aj iné skratky (lem niektoré):

  • grp:ctrls_toggle (obe klávesy Ctrl),
  • grp:alts_toggle (obe klávesy Alt),
  • grp:ctrl_shift_toggle (Ctrl + Shift),
  • grp:ctrl_alt_toggle (Ctrl + Alt),
  • grp:alt_shift_toggle (Alt + Shift),
  • grp:lwin_toggle (ľavý Win),
  • grp:rwin_toggle (pravý Win),
  • grp:sclk_toggle (Scroll Lock),
  • grp:lshift_toggle (ľavý Shift),
  • grp:rshift_toggle (pravý Shift),
  • grp:lctrl_toggle (ľavý Ctrl),
  • grp:rctrl_toggle (pravý Ctrl),
  • grp:lalt_toggle (ľavý Alt).

Voľba compose:menu zase slúži pre namapovanie tzv. Compose klávesy, ktorá pomocou viacnásobných kominácií kláves umožňuja zadávať ďalšie znaky, ktoré na bežnej klávesnici nie sú dostupné, viac http://en.wikipedia.org/wiki/Compose_key. Za zmienku ešte stojí zakomentovaná voľba qwerty, ktorá prepína umiestnenie Z a Y, východzie (teda bez tejto voľby) je QWERTZ.

Prepínanie na iné rozloženia klávesnice (tzv. klávesové mapy) zaistí program command:setxkbmap:

setxkbmap sk
setxkbmap sk qwerty
setxkbmap ru
setxkbmap ru fonetic

Gnome a KDE

Pre aplikácie Gnome a vlastne všetky GTK aplikácie postačujú predchádzajúce nastavenia. Pre aplikácie KDE (Qt) treba nainštalovať príslušné balíky kde-l10n-sk, prípadne aj kde-l10n-cs. (v KDE 3.x to boli súbory kde-i18n-*). Prípadne je potrebné vybrať písmo so slovenskými znakmi, čo v súčasnosti zaistí písmo ttf-dejavu. Lokalizácia jednotlivých programov býva v samostatných balíkoch, preto treba pri inštalácii pozrieť, či neexistuje aj balík s lokalizáciou (označené rôzne *-locale, *-l10n, *-i18n, *-sk a podobne).

Nedávno som si všimol, že moje nastavenie z /etc/default/locale nie je exportované do prostredia KDE (a ani Gnome), čo má vplyv na programy, ktoré nie sú aplikáciami KDE. Pôvodne som to riešil pridaním vlastného skriptu medzi skripty spúšťané pri štarte relácie X (/etc/X11/Xsession.d). Ale podrobnejším skúmaním problému som zistil, v čom je problém. Ide o to, že GDM (áno, nepoužívam KDM) vymazáva obsah premennej LANGUEAGE, ak prvý nastavený jazyk tejto premennej nie je zhodný s jazykom GDM. To pre mňa nebola až taká novinka, čo som však nedomyslel bolo, že ten názov jazyka musí byť celý. Po úprave premennej LANGUAGE do tvaru (ako to ukazujem vo výpise vyššie):

LANGUAGE="sk_SK.UTF-8:cs_CZ.UTF-8"

Po tomto nastavení už nasledujúci skript nie je potrebný, ale nechávam ho tu, pre všetky prípady…

Vytvoril som si súbor /etc/X11/Xsession.d/56language, ktorý načíta nastavenie premennej LANGUAGE, ak ešte nie je nastavená, zo spomínaného súboru a ak je tam definovaná, tak ju vyexportuje do prostredia:

# If variable LANGUAGE is not set, then source the /etc/default/locale file
# and then export LANGUAGE variable, if it was set

if [ -z "$LANGUAGE" ]; then
    . /etc/default/locale
    if [ "$LANGUAGE" ]; then
        export LANGUAGE
    fi
fi

Takto mám uchované nastavenie premennej LANGUAGE na jednom mieste, avšak používatelia stále môžu zmeniť jej hodnotu prostredníctvom svojho nastavenia, napr. v .bashrc.