Az ötlet a következő: a meglévő csomagleírások mennyisége alapján azt mondjuk, hogy a suse fordításait vesszük át, aztán ahol ez hiányos ott a fedoráét, majd az ubuntuét. A hiányzó sztringek persze mindből bekerülnek, aztán aki ráér nekiáll, és nem számoljuk hogy jaj most a redhatnak fordítunk :). Lényeg, hogy egy adatbázisba betoljuk a fordítandó és fordított cuccot az egyes disztrókból, majd kiszedjük a lefordítottnak nyilvánított sztringeket, de a fordítás már egységes lesz, függetlenül az eredeti szóhasználattól stb.
Megvalósítás: na ez a nehéz rész. Kell egy adatbázis, amiben tároljuk a csomagok leírásait, meg valamilyen egyedi azonosítóját, ami elsődleges kulcs lesz. A legnagyobb probléma a csomagnevek egymásnak megfeleltetése lesz, mert ehhez nincs sok segítség a po fájlokban. Azaz, az Ubuntus verzióban konkrétan nincs (trükközéssel állítható elő csak), a Fedorás a bináris csomagok fájlneveit és a csomagnevet is tartalmazza, és a Suse csak a csomagnevet. Plusz, az Ubuntu bekezdésenként külön üzenetbe szedi a hosszú leírásaokat, niiiiice :). Ezzel lesz tehát a legtöbb baj.
A lényeg azonban, hogy ha a forráscsomagokhoz (targéza) társítanánk a leírásokat, akkor a csomagdarabolások miatt lenne nehéz párosítani, ha a bináris csomagokhoz társítanánk, akkor meg az átnevezések miatt. Így valami öszvér megoldást kellene keresni. Az ötlet a következő:
-Vegyük a suses csomagleírásokat, mert mennyiségre azt hiszem abból van a legtöbb, és induljunk ki ezekből, azaz ezeket másoljuk máshova.
-Vegyük fel az adatbázisunkba a csomagneveket, illetve az ezekhez tartozó rövid/hosszú leírásokat, fordítással együtt.
-Vegyük fel a Fedorás és Ubuntus fájlokat, a fordítások mellé tegyük oda a csomagneveket, majd próbáljunk hasonló nevű csomagokat keresni a Suses táblában. Házi feladat értelmes algoritmust találni :). Ha találunk akkor örülünk, ha nem, akkor vagy az algoritmus a buta és van ugyanolyan forrásból épülő, azonos szerepű csomag Suse alatt, akkor manuálisan létrehozunk egy társítást, vagy tényleg nincs még olyan csomag, akkor felvesszük a Suse-táblába, amit ezentúl Egységes fordítások táblának nevezünk :).
-A közös rész ez lesz, ezt fogja minden disztribúció fordítócsapata fordítani, illetve a saját dolgai közül hozzápárosítani a szerinte megfelelőt.
Természetesen ebben nyilván kell tartani azt is, hogy melyik disztribúcióban szerepel az adott leírás, azaz melyik fájlba érdemes exportálni.
Nézzünk egy konkrét példát, mert ez a fenti még nekem se világos teljesen :).
Van az alacarte nevű kis menüszerkesztő programka. Ehhez tartozik a Suse po-fájljában a következő:
Remek akkor ezt felírjuk az Egységes fordítások táblába:#: alacarte (63049) summary
msgid "Menu editor for GNOME"
msgstr "GNOME menüszerkesztő"
#: alacarte (63050) description
msgid "Alacarte is a simple freedesktop.org compliant menu editor for GNOME
that lets you change your menus, simply and quickly. Just click and type to
edit, add, and delete any menu entry."
msgstr ""
"Az Alacarte egy, a freedesktop.org előírásainak megfelelő egyszerű\n"
"menüszerkesztő a GNOME-hoz, amely lehetőséget ad a menük gyors,\n"
"egyszerű módosítására. Csak kattintson és gépeljen bármely menüelem\n"
"szerkesztéséhez, hozzáadásához, eltávolításához."
név: alacarte|rövid leírás: msgid "...", msgstr "..."| hosszú leírás: msgid "...", msgstr "..."| használja: suse
Nézzük a Fedorát:
#. alacarte{DESCRIPTION}
#: alacarte-0.10.0-1.fc6.noarch.rpm alacarte-0.11.3-4.fc8.noarch.rpm
msgid ""
"Alacarte is a menu editor for GNOME that lets you get things done,\n"
"simply and quickly.\n"
"\n"
"Just click and type to edit, add, and delete any menu entry."
msgstr ""
#. alacarte{SUMMARY}
#: alacarte-0.10.0-1.fc6.noarch.rpm alacarte-0.11.3-4.fc8.noarch.rpm
msgid "Simple menu editor for GNOME"
msgstr "Egyszerű menü szerkesztő GNOME-hoz
Fel is írjuk a Fedora táblába:
név: alacarte (a csomagnévvel nem foglalkozunk)| rövid leírás: msgid "...", msgstr "..."| hosszú leírás:
msgid "...", msgstr "..."
Ezután megnézzük, hogy az Egységes fordítások táblában van-e valami hasonló? Nos van, és ennek felettébb örülünk.
Felírjuk az Egységes fordítások táblába, hogy: "...használja: suse, fedora."
Hasonlóképpen járunk el Ubuntu meg amit akarunk esetén is, módosítjuk a bejegyzést, ha van találat, ha meg nincs akkor felvesszük új bejegyzésként.
Némiképp bonyolítja a helyzetet, hogy az Ubuntu nem ad meg csomagneveket, de ezt túléljük :).
Illetve, a leírásdarabolás problémája is ott van, ezzel nem tudom mit lehet kezdeni. Lehet, hogy
automatán kellene darabolni a fordításokat exportkor? Esetleg tökönrúgni a fejlesztőket?
Ezután jönnek a fordítók és egy okos webes felületen vagy keresnek hasonló nevű csomagokat, vagy fogják és lefordítják a leírást.
Az igazán érdekes rész az export, amikor is megmutatkozik ennek az egész hajcihőnek a haszna:
Jön az egyszeri Ubuntus fordító, és kér egy po-fájlt. Ekkor az adatbázis leválogatja neki azokat, ahol a használja mezőben szerepel az Ubuntu, az adott csomag eredeti leírását kiszedi az ubuntus táblából, majd hozzácsapja a Suseból származó fordítást, azaz valahogy így fog kinézni:
msgid "easy GNOME menu editing tool"
msgstr "GNOME menüszerkesztő"
msgid "Alacarte is an easy-to-use menu editor for GNOME that can add and edit
new entries and menus. It works with the freedesktop.org menu
specification and should work with any desktop environment that uses"
the spec."
msgstr ""
"Az Alacarte egy, a freedesktop.org előírásainak megfelelő egyszerű\n"
"menüszerkesztő a GNOME-hoz, amely lehetőséget ad a menük gyors,\n"
"egyszerű módosítására. Csak kattintson és gépeljen bármely menüelem\n"
"szerkesztéséhez, hozzáadásához, eltávolításához."
Ezután a kapott fájl mehet az adott disztribúció svn-jébe vagy amije épp van.
Egyszerűnek hangzik, nem? Kinek van kedve megvalósítani? :)
9 megjegyzés:
openscope projekt nagyon messze van ettől?
Mutogatni a másikra könnyű mi? :)
Amúgy openscope érdemi programozási része még nem kezdődött el, viszont én önszorgalomból már csináltam egy po parser-t. Ez képes arra, hogy feldarabolja a po-kat ( pl: a ddtp-s po-kat). Ha ennek mennie kell adatbázisba, akkor írni kell egy programot ami a feldarabolt po-t feldolgozza és megfelelő SQL utasításokkal bepakolja azokat az adatbázisba.
Fordító felület rész az még egyáltalán nincs, lévén, hogy a statiszikát vettük elsődlegesnek.
Tehát van valami...
Mondjuk valami po feldolgozóm asszem nekem is van PHP-ban, de meg lehetne nézni, hogy van-e esetleg erre valami függvénykönyvtár esetleg. Szerintem az adatbázist úgy készítsük, hogy egy fordítási táblába kerül:
id, msgid, msgstr, szerep
szerep - egy szám amely megadja, hogy rövid vagy hosszú leírás és azon belül is hányadik elem (Ubuntu miatt)
Van egy másik tábla, amely összerendeli a fordításokat a distrókkal:
id, csomagnév, csomagazonosító, fordítási tábla id, disztró (kódja)
csomagazonosító - a klf. disztrókban azonosnak mondott csomagok csomagazonosítója megegyezik.
Talán így a legtöbb eshetőségre fel vagyunk készülve, de kíváncsi vagyok ti hogyan oldanátok ezt meg...
Szerintem az Ubuntu fejlesztőket lenne jó megrugdosni, hogy ne legyen 8-9 hosszú leírás darabja a csomagleírásnak, mivel teljesen felesleges. Így a po-k kezelése is egyszerűbb.
Könyvtári függvények? Ilyen célra aligha léteznek. Amúgy meg olyan nagy csodát talán már nem kell tenni, hogy a feldolgozás idomuljon erre a célra is.
Esetleg átalakítani egy már meglévő megoldást, mondjuk egy Pootlet?
Ahogy nézem a Pootle lényege pont az, hogy adatbázis mentes. Viszont talán az exportálás, főleg, hogy több különböző esetre kell alkalmazni egyszerűbb egy adatbáziból.
Megvannak a fájlok, vizsgálom a felépítésüket és küldök eredményt amint van. Azon gondolkozzatok, hogy a fordító felület milyen legyen (Szerintem valami baromi egyszerű kell).
Elkezdtem írni egy php scriptet ami feldolgozza a PO-fájlokat. Már használható dolgokat produkál, csak még kell rajta egy picit dolgoznom, hogy jól működjön. Egy nagy tömbbe rakom bele a cuccot, ez későbbiekben simán cserélhető egy adatbázisra. Holnap jelentkezem a részletekkel és talán a megoldással is már.
Úgy látszik nem érthető amit írok. :)
Nekem már van készen PO feldolgozóm, sőt már optimalizáltam is SuSE és Fedora po-k feldolgozására is.
Inkább azon kell gondolkodni, hogy pontosan milyen is legyen az adatbázis felépítése és megvalósítani, hogy a feldolgozott fájlokat reprezentáló objektumok bekerüljenek az adatbázisba.
Légyszi ne dolgozzunk egymás mellett mert abból soha nem sült ki semmi jó.
Ha kell, akkor küldöm a programot.
A Lenny óta állítólag a Debianban is vannak lefordított csomaginformációk. Ezt csak olvastam, nem próbáltam.
Megjegyzés küldése