23.3. A honosítás használata
Vissza | 23. fejezet - Honosítás: Az I18N/L10N használata és beállítása | Előre

## 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ódja | Leírás
--- | ---
en_US | Angol - Egyesült Államok
ru_RU | Orosz - Oroszország
zh_TW | Hagyomá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® 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é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`

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

#### 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® 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® á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.

Vissza | Fel | Előre
23.2. Az alapok | Főoldal | 23.4. I18N programok fordítása

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