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
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:
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.
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.
Á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® 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.
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.
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.
Í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.Big:\ :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.
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 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
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
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
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).
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észlet | Termináltípus |
---|---|
ISO8859-1 vagy ISO8859-15 | cons25l1 |
ISO8859-2 | cons25l2 |
ISO8859-7 | cons25l7 |
KOI8-R | cons25r |
KOI8-U | cons25u |
CP437 (alapértelmezett VGA) | cons25 |
US-ASCII | cons25w |
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:
Nyelv | Hely |
---|---|
Hagyományos kínai (BIG-5) | chinese/big5con |
Japán | japanese/kon2-16dot vagy japanese/mule-freewnn |
Koreai | korean/han |
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.).
Telepítsük fel az Xorg (x11-servers/xorg-server) vagy az XFree86™ (x11-servers/XFree86-4-Server) szerverek valamelyikét, majd telepítsük a nyelvhez tartozó TrueType® 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.
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.
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® vagy PDF formátumba a nyomtatni kívánt dokumentumot.
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® állományrendszere konfigurálható úgy, hogy képes legyen konvertálni az MS-DOS 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): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.