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
.
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
.