Internacionalizáció és lokalizáció (I18N és L10N)

Mi az az internacionalizáció (i18n) és a lokalizáció (L10N)?

A GNU gettext info oldalából:

Internacionalizáció alatt azt értjük, amikor egy program, vagy egy csomagot alkotó programok összessége tudja, hogy a világon több nyelvet beszélnek, és támogatja is ezen nyelvek egy részét. Ez egy általánosításra visszavezethető folyamat, melynek során a programnak el kell vonatkoztatnia az eredeti angol nyelvtől és az ezzel járó jelölésektől, és meg kell birkóznia a feladattal általános, nyelvtől független módon is. A program fejlesztőinek több módszer is rendelkezésükre áll ahhoz, hogy ezt a célt elérjék, létrejöttek erre vonatkozó szabványok. A GNU gettext egyike ezen szabványoknak.

Lokalizáció alatt azt a műveletet értjük, amikor a már nemzetköziesített programokat feltöltjük olyan adatokkal, amik lehetővé teszik, hogy a program egy adott nyelvnek vagy kulturális egységnek megfelelően kezelje a ki- és bemenetét. Ezen folyamat során az általánosított módszereket használó program ezeket specifikusan alkalmazza. A fejlesztői környezet több lehetőséget nyújt a futásidejű konfigurációra. Valamely országhoz tartozó, jellemző kulturális szokások formális leírása és az adott országban beszélt nyelvre fordított karakterláncok halmaza határozza meg az országban vagy nyelvre használandó "locale"-t. A felhasználók lokalizálhatják a programokat, ha a program indítása előtt, a megfelelő változó beállításával, kiválasztják a megfelelő "locale"-t.

Milyen I18N és L10N API-kat használ a GNOME?

A GNOME a Uniforum internacionalizációs szabványát használja. Ezt a "szabványt" a Sun Microsystem hozta létre és a GNU projekt átvette ezt a "gettext" csomagban. Megjegyzés, itt nem az X/Open szabványról van szó.

Hogyan írjak programot az I18N és L10N támogatás kihasználásával, vagy hol találok bővebb információt ebben a témában?

Olvass bele a GNU gettext csomag webes kézikönyvébe a http://www.gnu.org/manual/gettext/html_chapter/gettext_toc.html címen. Találhatsz még egy nagyon hasznos cikket a Linux Journal-ban az internacionalizációról a http://www.linuxjournal.com/issue59/3286.html lapon. Érdekesnek találhatod még az I18N GyIK-et a http://www.vlsivie.tuwien.ac.at/mike/i18n.html lapon.

Hogyan változtathatom meg a GNOME-os programjaim nyelvét?

Ha meg akarod változtatni a GNOME-os programok által használt nyelvet, egyszerűen meg kell változtatnod a LANG környezeti változót a megfelelő ISO 639 nyelvkódra. Ettől kezdve minden újonnan induló GNOME-os program ezt a nyelvet próbálja majd használni.

Mondjuk, hogy magyarul szeretnéd használni a GNOME-ot. A Bourne Shell-ben és a leszármazottaiban (bash) használd a set LANG="hu" parancsot. Ha C shell-t (vagy tcsh-t) használsz, írd be, hogy setenv LANG "hu". Ezeket a parancsokat szokás a .profile vagy a .login fájlba tenni, így a környezet minden belépésnél automatikusan végrehajtja ezeket.

Vannak nyelvek, mint pl. a spanyol, vagy az angol, amik további specializálásra szorulnak, a földrajzi hely függvényében. Ezekben az esetekben, megadhatod a nyelv ISO kódját, majd aláhúzásjel után az ország ISO 3166 kódját, valahogy így: "en_GB" ha Brit angolról van szó és "es_MX" ha mexikói spanyolról.

Ne felejtsd el, hogy a futó GNOME alkalmazások nyelve nem fog megváltozni a LANG változó átírásakor, be kell zárd és újra kell indítanod ezeket. Felhívom a figyelmedet arra, hogy nem minden alkalmazás támogat minden nyelvet, ezért ha beállítasz egy nyelvet, egyes alkalmazások használni fogják azt, mások angolul jelennek majd meg.

Találhatsz egy listát az összes ISO nyelv- és országkódról a http://www.twics.com/~craig/writings/linux-nihongo/node93.html lapon. Itt olvasható a GNOME-core által támogatott nyelvek listája a megfelelő kódokkal:

Katalán(ca)
Csehország (cs)
Dánia (da)
Németország (de)
Angol [USA] (en) [ja, az élet nem fair]
Angol [Nagy Britannia] (en_GB)
Spanyol [Spanyolország] (es)
Spanyol [Dominikai Köztársaság] (es_DO)
Spanyol [Guatemala] (es_GT)
Spanyol [Honduras] (es_HN)
Spanyol [Mexikó] (es_MX)
Spanyol [Panama] (es_PA)
Spanyol [Peru] (es_PE)
Spanyol [Svédország?] (es_SV) [es_SE kellene legyen ha Svédországról lenne szó]
Baszk (eu)
Finn (fi)
Francia (fr)
Ír (ga)
Magyar (hu)
Olasz (it)
Japán (ja)
Koreai (ko)
Holland (nl)
Norvég (no)
Lengyel (pl)
Portugál (pt)
Orosz (ru)
Szlovák (sk)
Svéd (sv)
Waloon (wa)