Počeštění FreeBSD

16. 12. 2005
Doba čtení: 4 minuty

Sdílet

Pokud se chystáte experimentovat s FreeBSD, asi vás bude zajímat, jakými způsoby lze lokalizovat jeho prostředí co nejblíže k naší mateřštině. Ukážeme si konfiguraci na globální i uživatelské úrovni a předvedeme si rozdíly mezi iso-8859-2 a Unicode.

Počeštění systému není naštěstí žádný problém. Jeho podstata tkví, stejně jako u Linuxu, v definování systémové proměnné LANG a MM_CHARSET. Aby vám čeština fungovala, musíte mít nainstalovánu knihovnu glibc s podporou locales. Stěžejním adresářem lokalizací je /usr/share/locale, kde se nachází podadresáře všech známých systémových lokalizací.

Každý podadresář obsahuje několik souborů, které udávají např. jak který národ zapisuje desetinná čísla ( LC_NUMERIC), jakým způsobem zapisuje datum, jak se nazývají měsíce a dny a jaké mají zkratky ( LC_TIME) atp. Pro nás je však nejdůležitější, že adresář locale obsahuje dva podadresáře pro český jazyk – cs_CZ.ISO-8859–2 a cs_CZ.UTF-8. Z názvů se dá vyvodit, že první používá jedno-bytové kódování iso-8859–2 a druhý dvou-bytové mezinárodní kódování utf-8 (pojímá např. i čínské, japonské, arabské a další, v našich končinách vzácně používané znaky). Klasické znaky ASCII jsou zobrazitelné oběma kódováními bez převodu, protože mají ve všech třech stejnou hodnotu.

cs_CZ.ISO-8859–2

U obou kódování se používá stejná strategie nastavení. Můžete lokalizaci nastavit na globální úrovni, nebo na úrovni uživatelské.

Uživatelskou konfiguraci provedeme v souboru ~/.login_conf:

me:\
    :charset=ISO-8859-2:\
    :lang=cs_CZ.ISO8859-2: 

Na prvním řádku by mohl být jakýkoliv identifikátor, jeho využití nabývá významu až u globálního nastavování lokalizace. Druhý řádek nastavuje proměnnou MM_CHARSET, kterou využívají aplikace k nastavení jejich MIME znakové sady. Třetí řádek nastavuje locale knihovny glibc.

Nastavení lokalizace na systémové úrovni se provádí v souboru  /etc/login.conf:

czech:Czech Users Accounts:\
    :charset=ISO-8859-2:\
    :lang=cs_CZ.ISO8859-2:\
    :tc=default: 

Oproti uživatelské konfiguraci je zde několik rozdílů. Identifikátor na prvním řádku představuje název třídy uživatelů. Každý nově vytvořený uživatel může být k této třídě přiřazen. Druhá část obsahuje titulek třídy. Následující řádky jsou nám již známé, až na poslední. Ten vkládá třídu default (viz. man 5 login.conf). Stávající uživatele je možné přeřadit ke třídě pomocí nástroje vipw, který edituje soubor /etc/master.passwd v němž jsou uloženy všechny informace o uživatelích a jejich hesla. Použití editoru je obdobné jako u vi. Pátý sloupec představuje onu jazykovou třídu, kterou musíme nastavit na czech.

user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh 

Je však velmi nepraktické přidávat nového uživatele a poté ještě přenastavit jeho třídu. Program adduser nám tento problém ulehčuje svou volbou -class, která specifikuje jazykovou třídu:

# adduser -class language 

Můžeme ještě nastavit defaultní třídu do konfiguračního souboru programu. Do souboru /etc/adduser.conf přidáme řádek  defaultclass = language.

V našich podmínkách však nastanou jen občas případy, kdy s jedním počítačem pracuje několik lidí hovořících rozličnou řečí. Nastavování jazykových tříd pro uživatele je tedy celkem zbytečné. Mnohem zajímavější alternativou by mohlo být nastavení locales v konfiguračním souboru shellu a X11.

Pro BASH přidáme do souboru /etc/profile řádky:

LANG=cs_CZ.ISO8859-2; export LANG
MM_CHARSET=ISO-8859-2; export MM_CHARSET 

Používáte-li T/CSH, je vaším cílovým souborem /etc/csh.login:

setenv LANG cs_CZ.ISO8859-2
setenv MM_CHARSET ISO-8859-2 

Pro nastavení X11 použijeme inicializačních souborů uživatelů –  $HOME/.xinitrc:

LANG=cs_CZ.ISO8859-2; export LANG 

nebo

setenv LANG cs_CZ.ISO8859-2 

Nastavení konzole

Aby se nám české znaky na konzole zobrazovaly a my je také mohli zapisovat, musíme provést několik úprav souboru /etc/rc.conf. Základem je nastavení fontů, provedeme to pomocí řádků:

font8x16=font_name
font8x14=font_name
font8x8=font_name 

Tyto fonty se nacházejí v adresáři /usr/share/syscons/fonts. V názvech fontů se nepoužívá přípona .fnt. Klávesové mapy nalezneme v adresáři /usr/share/syscons/keymaps. Název požadované mapy (bez přípony .kbd) použijeme v řádku keymap=keymap_name. Zbývá nám ještě poslední úprava, a to souboru /etc/ttys, kde nastavíme správný typ terminálu konzoly. Všem položkám ttyv* přiřadíme hodnotu  cons25l2.

ict ve školství 24

cs_CZ.UTF-8

Nastavování kódování utf-8 je stejné jako u iso-8859–2. Problém je v použití unicode v konzoli – není totiž ještě podporováno. Který uživatel však pracuje v konzoli? Snad občas root a ten nepotřebuje používat žádné jiné kódování než iso-8859–1, protože názvy a obsah všech systémových souboru jsou reprezentovány jen ASCII znaky. Ze strany X11 a ostatních programů, jako např. Firefox, není s utf-8 problém. Jedinou chybkou, na kterou jsem narazil, byla podpora unicode v GTK-1.2. Jedná se o volbu fontů. Ty musí mít kódování iso10646-1 a defaultně nemusí být nastaveny. Problém lze však elegantně řešit úpravou souboru /usr/X11R6/share/themes/Default/gtk/gtkrc.cs. Pozor, tento soubor je symlinkem na gtkrc.iso-8859–2, takže jej musíte nejdříve smazat a potom vytvořit nový. Ten musí obsahovat definice unicode fontů:

style "gtk-default-utf8" {
        fontset = "-*-trebuchet-ms-medium-r-normal-*-12-*-*-*-*-*-iso10646-1,\
                   -*-arial-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
                   -*-trebuchet-ms-medium-r-normal-*-12-*-*-*-*-*-iso10646-1,\
                   -*-arial-medium-r-normal--12-*-*-*-*-*-iso10646-1" }
                   # jeste se da misto "trebuchet-ms" pouzit i "verdana"
class "GtkWidget" style "gtk-default-utf8" 

Chcete-li nastavit fonty GTK na uživatelské bázi, stačí napsat tyto řádky do souboru  ~/.gtkrc.