FreeBSD kézikönyv
Előző | Fejezet 23. Honosítás: Az I18N/L10N használata és beállítása | Következő

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

Előző | Tartalom | Következő
Az alapok | Fel | I18N programok fordítása

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