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:
Nyelv/ország kódja | Leírás |
---|---|
en_US | Angol - Egyesült Államok |
ru_RU | Orosz - Oroszország |
zh_TW | Hagyományos kínai - Tajvan |
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.
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:
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.
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:
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:
nyelv
:0:0:Felhasznalo neve:/home/felhasznalo:/bin/shAz adduser
-rel az alábbiak
szerint tudunk új felhasználókat
felvenni a rendszerbe:
Adjuk hozzá a defaultclass =
sort az
nyelv
/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
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:
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
(Beállítások) pontot, majd a
(Konzol)-t! Vagy ehelyett
beírhatjuk az alábbi sorokat a
/etc/rc.conf
állományba:
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:
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:
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/
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
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.
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):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.