Lokalizace systému

Z Wiki@FreeBSD.cz
Přejít na: navigace, hledání

Při nastavování české lokalizace je obecně nutné řešit několik typů problémů. Jedná se především o

  • zobrazování českých znaků,
  • psaní českých znaků,
  • tisk českých znaků,
  • podporu specifik českého jazyka, jako jsou rozpoznávání a převod velkých a malých českých písmen, abecední třídění, časové údaje apod.

V případě operačního systému FreeBSD, podobně jako i u ostatních unixových systémů, spočívá tíha podpory národního jazyka na

  • operačním systému jako takovém,
  • grafickém systému X Window,
  • jednotlivých aplikacích, a i když je aplikace v podobě portu nebo zkompilovaného balíku již někým pro systém FreeBSD přizpůsobena, stále je ještě někdy nutné u ní správně nastavit lokalizaci.

Česká systémová lokalizace se poprvé objevila ve FreeBSD 4.0 s XFree86 3.3.6 a od té doby je neustále vyvíjena a udržována a některé zde popisované možnosti, jako například přímé nastavení české klávesnice na konzole již během instalace, se objevily až v průběhu vývoje řady 4.x. Ve starších verzích FreeBSD se tedy mohou vyskytovat některé odchylky proti zde uvedeným postupům, z nichž většina je podchycena níže v tomto dokumentu. Není-li napsáno jinak, informace k české systémové lokalizaci se vztahují k verzi FreeBSD 4.9-RELEASE s XFree86 4.3.0.

Systémová konzola

Pro správné nastavení české lokalizace na konzole operačního systému je v zásadě zapotřebí nastavit hodnotu jedné nebo více proměnných a zajistit spuštění některých příkazů s potřebnými parametry pro nastavení klávesnice a zobrazování českých znaků, což se obvykle provádí automaticky při startu systému, nebo i přímo za běhu.

Nastavení lokalizačních proměnných

Aby mohly aplikace s češtinou správně pracovat, v jednom ze skriptů prováděných během přihlašování musí být nastavena proměnná LANG, nebo vhodná kombinace LANG/LC_*. Pro příkazové procesory typu Bourne lze použít následující příklad (např. v /etc/profile nebo ~/.profile):

   LANG=cs_CZ.ISO8859-2; export LANG

Pro csh by příklad výše vypadal takto (např. v /etc/csh.login nebo ~/.cshrc):

   setenv LANG cs_CZ.ISO8859-2

Pokud je požadováno pouze nastavení proměnné LANG, je možné do souboru /etc/login.conf nebo ~/.login_conf na vhodném místě uvést lang=cs_CZ.ISO8859-2, což je navíc řešení nezávislé na používaném příkazovém procesoru. Další informace můžete nalézt v manuálových stránkách setlocale(3), environ(7) (LANG/LC_ALL a ostatní LC_*) a login.conf(5).

Nastavení české klávesnice a zobrazování českých fontů

Pro nastavení české klávesnice a českých fontů je nejlepší mít v souboru /etc/rc.conf uvedeny tyto čtyři řádky:

   keymap="cs.latin2.qwertz"
   font8x16="iso02-8x16"
   font8x14="iso02-8x14"
   font8x8="iso02-8x8"

Zapsání výše uvedených řádků do /etc/rc.conf může zajistit i instalační program, pokud v menu Configure -> Console v podmenu Keymap zvolíte Czech ISO (accent) a v podmenu Font zvolíte ISO 8859-2. Způsob ovládání klávesnice je uveden v souboru /usr/share/syscons/keymaps/cs.latin2.qwertz.kbd.

Zobrazování rámečků

Chcete-li, aby na počeštěné konzole fungovaly rámečky (znaky ACS) alespoň ve formě ASCII znaků, proměnná TERM musí být nastavená na hodnotu cons25l2. Toho lze dosáhnout záměnou cons25 na cons25l2 v souboru /etc/ttys s následným zasláním signálu HUP procesu init a opětovým přihlášením, nebo s následným restartem celého systému. Pokud je globální nastavení nepřijatelné, nebo chcete změnu proměnné TERM pouze u sebe, k nastavení proměnné LANG přidejte také:

   if [ "$TERM" = cons25 ]; then
     TERM=cons25l2
   fi

Pokud chcete, aby byly rámečky zobrazeny pomocí semigrafických znaků, musíte provést příkazy (tímto způsobem se nové fonty zavedou až při restartu systému - pro jejich okamžité zavedení lze použít příkaz vidcontrol):

   cp iso02-8x8.fnt iso02-8x14.fnt iso02-8x16.fnt /usr/share/syscons/fonts/
   patch /usr/share/misc/termcap < termcap.diff
   cap_mkdb /usr/share/misc/termcap

Pozor na přihlašování na vzdálené systémy z této konzole, protože terminálový popis cons25l2 je ostatním systémům mnohem méně známý, než cons25!

Konfigurace kurzoru myši

Při standardní konfiguraci systému jsou pro zobrazování kurzoru myši v podobě šipky využívány čtyři znaky 0xD0 až 0xD3, které jsou ovšem ve znakové sadě ISO8859-2 použity pro písmena přeskrtnuté D, N s čárkou, N s háčkem a O s čárkou, a tato písmena se tedy bez změny konfigurace nemohou správně zobrazovat. Řešením je přesunutí kurzoru myši na jinou pozici ve znakové sadě, což lze provést buď spuštěním příkazu pro změnu nastavení zobrazování vidcontrol -M c nejlépe při startu systému, nebo novou kompilací jádra s nastaveným konfiguračním parametrem SC_MOUSE_CHAR. Pokud je na konzole použit režim s osmibitovými znaky, pro novou pozici lze zvolit znaky z rozsahu 0x00 až 0x1F a za nejrozumnější volbu lze považovat c = 3 nebo c = 7. Pokud je ovšem na konzole režim s devítibitovými znaky, použití znaků mimo interval 0xC0 až 0xDF způsobí, že kurzor myši bude přerušován svislými čárkami. Na druhou stranu jakákoli čtveřice znaků z intervalu 0xC0 až 0xDF může činit problémy při zobrazování některých platných znaků ze znakové sady ISO8859-2, proto musí každý uživatel zvolit svoji nejlepší osobní variantu. Změnu pozice kurzoru myši ve znakové sadě při startu systému lze zajistit přidáním následujícího řádku do /etc/rc.conf:

     mousechar_start="3"

Připojování disků

Pokud někdo chce připojovat lokální WinXX disky FAT s českými názvy souborů, musí u příkazu mount navíc uvést parametry -D CP852 (ve verzi 5.1 a starších se uvádělo -W iso22dos) a -L cs_CZ.ISO8859-2. Lokální disk s českými názvy souborů tedy lze z příkazového řádku připojit takto:

   mount -t msdos -o -DCP852,-Lcs_CZ.ISO8859-2 /dev/... /mnt

A odpovídající řádek v /etc/fstab by vypadal takto:

   /dev/... /mnt msdos rw,-DCP852,-Lcs_CZ.ISO8859-2 0 0

V případě NTFS (v řežimu pouze pro čtení) se uvádí:

   mount -t ntfs -o -CISO8859-2 /dev/... /mnt

A odpovídající řádek v /etc/fstab by vypadal takto:

   /dev/... /mnt ntfs ro,-CISO8859-2 0 0

K připojení vzdálených WinXX disků lze využít protokol SMB:

   mount -t smbfs -o -Eiso8859-2:cp852,-Lcs_CZ.ISO8859-2 //user@server/... /mnt

Příkaz v této podobě vyžaduje interaktivní zadání hesla. Odpovídající řádek v /etc/fstab, ovšem již bez ručního zadávání hesla, by vypadal takto:

   //user@server/... /mnt smbfs rw,-N,-Eiso8859-2:cp852,-Lcs_CZ.ISO8859-2 0 0

Navíc je použit parametr -N, který zajistí, že heslo je načteno ze souboru /etc/nsmb.conf:

   [server:user]
   password=...

Starší verze FreeBSD a systémová konzola

Změna názvu lokalizace

Od FreeBSD 4.5 byly vynecháním podtržítka změněny názvy lokalizací z xx_XX.ISO_8859-X na xx_XX.ISO8859-X. Ve FreeBSD 4.4 a starších je tedy místo cs_CZ.ISO8859-2 nutné používat cs_CZ.ISO_8859-2. Správný název lokalizace si lze ověřit v adresáři /usr/share/locale/, kde je i vidět, že z důvodu kompatibility je u novějších verzí zatím stále zachována možnost používat i starší názvy lokalizací, nicméně v nových instalacích by již měly být používány pouze nové názvy.

Ostatní změny

Znaky ACS v semigrafické podobě fungovaly až do FreeBSD 4.5. Od FreeBSD 4.6 však byly v rámci "standardizace" zrušeny a nahrazeny pouze ASCII variantou.

Možnost zvolení české klávesnice při instalaci se objevila ve FreeBSD 4.5 a možnost zadat mousechar_start v rc.conf ve FreeBSD 4.4. Ve starších verzích lze pro změnu použitých znaků pro kurzor myši použít variantu:

     allscreens_flags="-M c"

--Cejkar 15:47, 26. 4. 2007 (CEST)