Micsoda fennhéjázó cím.
Létrehoztam egy különbejáratú kategóriát programozás néven, ami alatt azok a bejegyzések lesznek, amik általában az ilyen jellegű munkákkal kapcsolatosak. Eleinte a legutóbbi posztban részletezett problémáról fog szólni, később meg majd ami jön. Mivel a Wordpress -jelen blogmotor- nem támogat olyan funkciót, hogy a kapcsolódó posztokat megjelenítse, így majd sajátkezűleg fogom az adott poszt aljára belinkelni azokat.
A mai nap ismét tudtam érdemben foglalkozni a tesztprogram elkészítésével.
Továbbra sincs kész, viszont nem mondanám, hogy nem haladtam. Immár a számomra szükséges szinten ismerem a nemzetköziesítés mibenlétét.
Az egész lényege a gettext.
Részben mindenféle kósza Makefile-okból, és a wxWidgets internat példaprogjához mellékelt readme-ből sikerült kihámoznom a lényeget.
Az xgettext nevű program szolgál arra, hogy a kódból kinyerjük a fordítandó string-eket. Fel is írom, hogyan, el ne felejtsem…
xgettext -C -n -k_ -o programneve.po programneve.cpp
A C paraméter a C/C++ input fájlra utal, az n arra, hogy a kimenő .po fájlba írja bele a string előfordulási helyét is, a k-val a kulcsszavakat adhatok meg. Jelen esetben, mivel a programban a _() makrót használom a stringekhez, elég lesz ez az egy kulcsszó, egyébként lehetne több is.
Miután lefutott, neki lehet esni a .po lefordításának, valami kézreálló texteditorral. Az mcedit elég okosan kezeli a .po-kat. A fel/le gombokra egyből a következő mezőre ugrik, ahova a lefordított szöveget kelle beírni.
A kész .po fájl(oka)t át kell alakítani .mo-vá.
msgfmt -o programneve.mo programneve.po
Nem is olyan bonyolult.
Végülis, nem lesz szükség Makefile-ra, mivel csak egy .po-val fogok dolgozni. Lehetne, de inkabb nem költöm erre az időt most.
Megvan tehát a program, ki tudom nyerni a fordítandó string-eket .po-ba, ezt tudom konvertálni .mo-ba.
Ami hátra van, az a locale-ok kezelése a programban, és a katalógusok betöltése(.mo), és használta. Jelen pillanatban ez meg eleg ködös, de a kövekező nekifutásra remélem összehozom. Igazából elég kevés a példakód, a dokumentáció sem magyarázza agyon a dolgokat. A php.net még mindig irányadó lehet, online-dokumentáció terén, remek leírásokkal, és sok példakóddal.
Itt van a fejemeben minden, ami kell a megoldáshoz, de valahogy nem áll össze.
Holnapra megérik biztosan.
(A mai kutakodás vicces tanulsága, az i18n, és a l10n varázsszavak megfejtése volt. Évek óta itt voltak előttem, használtam őket, de mindig ott dolgozott bennem, hogy mi a fenét jelenthetnek. Nos, a gettext doksiból véletleten kiderült. Az internationaliztion 18 karakter, a localization meg 10, úgyhogy lusták vagyunk leírni. Meghagyjuk az első, és az utolsó karaktert, és közéírjuk az adott számot. Az emberi találékonyságnál csak a lustaság ölt nagyobb méreteket.)
Előzmények:
A wxWidgets projekt, I.-rész
2 Comments
teszt
Most, hogy tudok hozzászólni, ideírom, hogy jó ötlet ez a blog-szerű naplózás, legalább mások is láthatják, mi is történik. Így tovább!