23.3. A honosítás használata

Az I18N minden adottságával együtt független a FreeBSD-től, egy egyezményes rendszer. Mindenkit bátorítunk arra, hogy segítse a FreeBSD-t ennek az egyezménynek a betartásában.

A honosítás beállításai három főbb részre tagolhatóak: a nyelv kódja, az ország kódja és a kódolás. A nyelvi beállítások nevei is ezekből állnak össze, az alábbi séma szerint:

NyelviKód_OrszágKód.Kódolás

23.3.1. A nyelv és az ország kódja

Ha a FreeBSD (vagy bármilyen más, az I18N-t ismerő) rendszert honosítani akarunk az adott nyelvre, akkor a felhasználónak ismernie kell az adott országra és nyelvre vonatkozó kódokat (az országkód fogja elárulni az alkalmazásnak, hogy a nyelv melyik változatát használja). Ezenkívül a böngészők, SMTP/POP szerverek és webszerverek stb. is ennek alapján fognak döntéseket hozni. Íme néhány nyelv/ország kódja:

Nyelv/ország kódjaLeírás
en_USAngol - Egyesült Államok
ru_RUOrosz - Oroszország
zh_TWHagyományos kínai - Tajvan

23.3.2. Kódolások

Bizonyos nyelvek 8 bites, széles vagy több byte-os, nem ASCII kódolású karaktereket használnak, melyekről a multibyte(3) man oldalán olvashatunk részletesebben. Ezeket régebbi alkalmazások egyáltalán nem ismerik fel, és hibásan vezérlőkaraktereknek tulajdonítják. Az újabbak általában már felismerik a 8 bites karaktereket. A felhasználóknak az alkalmazásokat a széles vagy a több byte-os karakterek használatához vagy újra kell fordítaniuk, vagy pedig megfelelően be kell állítaniuk, az implementációtól függően. A széles vagy több byte-os karakterek beolvasásához és feldolgozásához a FreeBSD Portgyűjtemény nyelvenként tartalmaz különféle programokat. A konkrét részletek megértéséhez olvassuk el az érintett FreeBSD portok I18N dokumentációját.

Vagyis a felhasználóknak át kell nézniük az alkalmazáshoz tartozó dokumentációt, mivel ebből tudhatják meg, hogyan állítsák be ezeket megfelelően vagy milyen értékeket adjanak át a configure/Makefile/fordító hármasnak.

Amiket esetleg érdemes lehet ezzel kapcsolatban észben tartanunk:

  • A nyelvfüggő egyszerű karakteres készletek (lásd multibyte(3)), például ISO8859-1, ISO8859-15, KOI8-R, CP437.

  • A széles vagy több byte-os kódolások, például az EUC, Big5.

A karakterkészletek jelenleg elérhető listáját meg tudjuk tekinteni az IANA adatbázisában.

Megjegyzés:

A FreeBSD helyettük X11-kompatibilis nyelvi kódolásokat használ.

23.3.3. I18N alkalmazások

A FreeBSD port- és csomagrendszerében az I18N alkalmazások a könnyebb felismerhetőség érdekében a nevükben tartalmazzák az I18N megnevezést. Nem minden esetben támogatják a szükséges nyelvet.

23.3.4. A nyelvi beállítások megadása

Általában elegendő annyi, hogy a kívánt nyelvi beállítás nevét exportáljuk az általunk használt parancsértelmező LANG környezeti változójába. Ez megtehető a felhasználói könyvtárunkban található ~/.login_conf, vagy a felhasználói parancsértelmező indító állományában (~/.profile, ~/.bashrc, ~/.cshrc). Nem szükséges a nyelvi beállítások részleteit, mint például az LC_CTYPE, LC_CTIME változókat, megadni. A pontosabb részleteket a FreeBSD adott nyelvre vonatkozó dokumentációjában találjuk meg.

A következő két környezeti változót kell megadnunk az említett konfigurációs állományokban:

  • A LANG változót a POSIX(R) setlocale(3) családjának

  • A MM_CHARSET változót az alkalmazás MIME karakterkészletéhez

Ez magában foglalja a felhasználói parancsértelmező, az adott alkalmazás és az X11 beállítását.

23.3.4.1. A nyelvi beállítások megadásának módszerei

Két módszer létezik a nyelvi beállítások megadására, ezen kettőről fogunk a továbbiakban beszélni. Az első (és egyben ajánlott) ezek közül a bejelentkezési osztályban levő környezeti változók beállítása, a második pedig környezeti változók hozzáadása a parancsértelmező rendszerszintű indító állományához.

23.3.4.1.1. Beállítás a bejelentkezési osztályokkal

Ezzel a módszerrel a nyelvi beállítás nevéhez és a MIME karakterkészlethez kötődő környezeti változókat az összes létező parancsértelmező számára csak egyszer kell megadnunk ahelyett, hogy külön mindegyikük indítóállományában szerepeltetnénk. A felhasználó a saját részét maga is elvégezheti, míg a rendszer szintjén adminisztrátori jogosultságokat igényel.

23.3.4.1.1.1. Felhasználói szintű beállítás

Íme példa gyanánt a felhasználó könyvtárában egy egyszerű .login_conf állomány, amiben mind a két változót Latin-1 kódolásra állítottuk:

me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:

Ebben a .login_conf példában a változókat BIG-5 kódolású hagyomános kínai nyelvre állítjuk. Észrevehetjük, hogy itt sokkal több változó beállítására van szükségünk, mivel egyes szoftverek nem kezelik megfelelően a nyelvi beállításokat kínai, japán és koreai nyelvek esetén.

# Azok a felhasználók, akik nem kívánnak tajvani pénz- vagy idő formátumot
# használni, egyenként írják át a változókat
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big5:\
	:setenv=LC_COLLATE=zh_TW.Big5:\
	:setenv=LC_CTYPE=zh_TW.Big5:\
	:setenv=LC_MESSAGES=zh_TW.Big5:\
	:setenv=LC_MONETARY=zh_TW.Big5:\
	:setenv=LC_NUMERIC=zh_TW.Big5:\
	:setenv=LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": # a gcin beállítása XIM szerverként

A többit lásd a Rendszergazdai szintű beállítások résznél és a login.conf(5) man oldalon.

23.3.4.1.1.2. Rendszergazdai szintű beállítás

Ellenőrizzük, hogy a felhasználó /etc/login.conf állományban szereplő bejelentkezési osztálya a megfelelő nyelvet állítja be. Győződjünk meg róla, hogy az alábbi beállítások helyet kapnak az /etc/login.conf állományban:

nyelv_neve|A hozzáférés típusának leírása:\
	:charset=MIME_karakterkészlet:\
	:lang=nyelvi_beállítás_neve:\
	:tc=default:

Folytassuk tovább az előbbi Latin-1-es példánk szerint:

nemet|Nemet felhasznalok hozzaferesei:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:

Mielőtt megváltoztatnánk a felhasználók bejelentkezési osztályait, adjuk ki a következő parancsot:

# cap_mkdb /etc/login.conf

Ezzel a /etc/login.conf új tartalma láthatóvá válik a rendszer számára.

A bejelentkezési osztály megváltoztatása a vipw(8) programmal

A vipw segédprogramot új felhasználók hozzáadására használjuk, aminek eredményeképpen egy ehhez hasonló bejegyzést tudunk létrehozni:

felhasznalo:jelszo:1111:11:nyelv:0:0:Felhasznalo neve:/home/felhasznalo:/bin/sh
A bejelentkezési osztály megváltoztatása az adduser(8)-rel

Az adduser-rel az alábbiak szerint tudunk új felhasználókat felvenni a rendszerbe:

  • Adjuk hozzá a defaultclass = nyelv sort az /etc/adduser.conf-hoz. Ne felejtsük el, hogy ezután minden olyan felhasználónál a default bejelentkezési osztályt meg kell adni, akik nem ezt a nyelvet használják.

  • Egy másik megoldás lehet, hogy a adduser(8) használata során minden felhasználó esetén külön megadjuk a nyelvet az

    Enter login class: default []: 

    rész megjelenésekor.

  • Vagy használhatjuk az alábbit az egyes eltérő nyelvű felhasználók hozzáadásánál:

    # adduser -class nyelv
A bejelentkezési osztály megváltoztatása a pw(8)-vel

Amennyiben a pw(8)-t használjuk új felhasználók hozzáadására, így érdemes meghívnunk:

# pw useradd felhasználó_neve -L nyelv
23.3.4.1.2. Beállítás a parancsértelmező indító állományával

Megjegyzés:

Ezt a módszert nem javasoljuk, mivel parancsértelmezőnként eltérő beállítást kíván. Használjuk helyette a bejelentkezési osztályokkal megvalósított módszert.

A nyelvi beállítás nevének és a MIME karakterkészlet beállításához egyszerűen csak adjuk meg a lenti /etc/profile és/vagy /etc/csh.login parancsértelmező indító állományokban bemutatott környezeti változót. Továbbra is a német nyelvet használjuk a példánkban:

Az /etc/profile esetén:

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET

Vagy a /etc/csh.login esetén:

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1

Úgy is megoldhatjuk ezt a feladatot, ha fenti utasításokat a /usr/share/skel/dot.profile (hasonló a fentebb említett /etc/profile állományhoz) vagy /usr/share/skel/dot.login (hasonló a fentebb említett /etc/csh.login állományhoz) esetén hajtjuk végre.

X11 esetén:

Adjuk meg a $HOME/.xinitrc állományban:

LANG=de_DE.ISO8859-1; export LANG

Vagy:

setenv LANG de_DE.ISO8859-1

Attól függően, milyen parancsértelmezőt használunk (lásd fentebb).

23.3.5. A konzol beállítása

Az összes egyszerű karakteres készlet esetén a kérdéses nyelvhez megfelelő konzolos betűtípust az /etc/rc.conf állományban tudjuk beállítani:

font8x16=betűtípus_neve
font8x14=betűtípus_neve
font8x8=betűtípus_neve

Itt a betűtípus_neve az .fnt kiterjesztés elhagyásával a /usr/share/syscons/fonts könyvtárban található állományok nevéből adható meg.

Ha szükséges állítsuk még be a megfelelő billentyű- és betűkiosztást is a sysinstall segítségével. Ahogy sikerült elindítanunk a sysinstallt, válasszuk a Configure (Beállítások) pontot, majd a Console (Konzol)-t! Vagy ehelyett beírhatjuk az alábbi sorokat a /etc/rc.conf állományba:

scrnmap=betűkiosztás_neve
keymap=billentyűkiosztás_neve
keychange="funkcióbillentyű_sorszáma szekvencia"

Itt a betűkiosztás_neve a /usr/share/syscons/scrnmaps könyvtárban található állományok nevéből származtatható az .scm kiterjesztés elhagyásával. A betűkiosztásokat általában a 9 bites karaktermátrixszal rendelkező VGA megjelenítők problémáinak megoldására lehet használni, mivel így az eredetileg 8 bittel ábrázolt betűket ki lehet tolni az ilyen típusú kártyák pszeudografikus területéről.

Ha aktiváltuk a moused egérkezelő démont az /etc/rc.conf állományban az alábbi sor megadásával:

moused_enable="YES"

akkor a következő bekezdésben rá is térhetünk az egérmutató adatainak vizsgálatára.

A syscons(4) meghajtóban található egérmutató alapértelmezés szerint a 0xd0 - 0xd3 karaktereket foglalja el a karakterkészletben. Ha a nyelv ezeket használja, arrébb kell költöztetnünk ezt az egérmutató által elfoglalt sávot. A FreeBSD-ben az /etc/rc.conf állományon keresztül érhetjük el:

mousechar_start=3

A billentyűkiosztás_neve a /usr/share/syscons/keymaps könyvtárból, a .kbd kiterjesztés elhagyásával keletkezik. Ha nem vagyunk benne biztosak, melyik kiosztást is kellene használnunk, a kbdmap(1) segítségével a rendszer újraindítása nélkül kipróbálhatjuk a rendelkezésre álló billentyűkiosztásokat.

A keychange használatára többnyire a funkcióbillentyűk adott termináltípushoz egyeztetéséhez van szükség, mert a funkcióbillentyűk szekvenciái nem adhatóak meg a billentyűkiosztásban.

Ezeken felül érdemes megbizonyosodnunk róla, hogy a /etc/ttys állományban jól állítjuk be a terminál típusát minden ttyv* bejegyzés esetén. Az aktuálisan előre beállított kapcsolatok a következők:

KarakterkészletTermináltípus
ISO8859-1 vagy ISO8859-15cons25l1
ISO8859-2cons25l2
ISO8859-7cons25l7
KOI8-Rcons25r
KOI8-Ucons25u
CP437 (alapértelmezett VGA)cons25
US-ASCIIcons25w

A széles és több byte-os karaktereket használó nyelvek esetén használjuk a /usr/ports/nyelv könyvtárban megfelelő FreeBSD portot. Egyes portok konzolosként jelennek meg, miközben a rendszer soros virtuális terminálként látja ezeket, ezért fenn kell tartanunk elegendő virtuális terminált mind az X11, mind pedig pszeudo-soros konzol számára. Itt látható a konzolon más nyelvet használó alkalmazások részleges listája:

NyelvHely
Hagyományos kínai (BIG-5)chinese/big5con
Japánjapanese/kon2-16dot vagy japanese/mule-freewnn
Koreaikorean/han

23.3.6. Az X11 beállítása

Habár az X11 nem része a FreeBSD projektnek, megemlítünk vele kapcsolatban néhány hasznos információt a FreeBSD felhasználók számára is. Még több részletet a Xorg honlapjáról vagy az általunk használt X11 szerver dokumentációjából tudhatunk meg.

Az ~/.Xresources állományban további I18N beállításokat finomíthatunk alkalmazásonként (például betűtípusok, menük stb.).

23.3.6.1. Betűtípusok megjelenítése

Telepítsük fel az Xorg (x11-servers/xorg-server) vagy az XFree86TM (x11-servers/XFree86-4-Server) szerverek valamelyikét, majd telepítsük a nyelvhez tartozó TrueType(R) betűtípusokat. Ezután a megfelelő nyelvi beállítása megadása révén már látni fogjuk a kiválasztott nyelven megjelenő menüket és egyéb szövegeket.

23.3.6.2. Idegennyelvű karakterek bevitele

Az X11 beviteli módszerének (X11 Input Method, XIM) protokollja egy új szabvány az összes X11 klienshez. Minden X11 alkalmazást olyan XIM-kliensként kell elkészíteni, amelyek a bemenő adatokat az XIM beviteli szerverektől kapják. Különböző XIM szerverek érhetőek el az eltérő nyelvekhez.

23.3.7. Nyomtatók beállítása

Egyes egyszerű karakteres készletek általában hardveresen beépítve megtalálhatóak a nyomtatókban. A széles és több byte-os karakterkészletek azonban külön beállítást igényelnek, amire az apsfilter használatát javasoljuk. A megfelelő nyelvhez szabott eszközökkel át is lehet konvertálni PostScript(R) vagy PDF formátumba a nyomtatni kívánt dokumentumot.

23.3.8. A rendszermag és az állományrendszerek

A FreeBSD gyors állományrendszere (Fast File System, FFS) szabályosan kezeli a 8 bites karaktereket, tehát tetszőleges egyszerű karakteres készlet (lásd multibyte(3)) használható vele, viszont a karakterkészlet nevét nem tárolja el az állományrendszerben. Emiatt a neveket nyersen kezeli, semmit sem tud a kódolásukról. Az FFS hivatalosan még nem támogat semmilyen fajta széles vagy több byte-os karakterkészletet. Léteznek azonban független javítások az FFS-hez, amelyek lehetővé teszik ilyen széles vagy több byte-os karakterek használatát. Ezek csak átmeneti és nem hordozható megoldások, olyan módosítások, amelyekről úgy döntöttünk, nem vesszük fel ezeket a forrásfába. Az érintett nyelvek honlapjain elérhetjük ezeket a javításokat és többet megtudhatunk róluk.

A FreeBSD MS-DOS(R) állományrendszere konfigurálható úgy, hogy képes legyen konvertálni az MS-DOS(R) Unicode és a kiválasztott FreeBSD állományrendszerének karakterkészlete között. Erről bővebben a mount_msdosfs(8) man oldalon olvashatunk.

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <questions@FreeBSD.org>.

Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.