DescriptionTranslator

Revision 2 as of 2009-08-31 23:17:48

Clear message

Ez az oldal egy olyan egyszerű (nem) szoftver tervét dokumentálja, amely felgyorsítja az Ubuntu-specifikus, ismétlődő csomagleírások fordítását. A szöveg eredetileg egy magánlevél volt, a formátumért bocs :). Ha nem teljesen világos hogy mit akarok, kérdezz Smile :) - kg.

Önkéntest keresünk, aki megírná!

1, A program célja a hasonló, jellemzően csak egy nyelvnévben eltérő csomagleírások kigyűjtése egy pot sablonba, majd ennek kézi lefordítása után az egyes csomagokra jellemző leírások legenerálása egy po fájlba, amit a program felhasználója feltölthet a launchpadra[1].

2, A hasonló csomagok kiválogatásához használandó apt-cache sorok mellékelve, nem zárom ki hogy még lesz több Smile :)

3, A csomagok leírása legegyszerűbben a python-apt csomag használatával nyerhető ki. Természetesen elég az információkat egy nyelv csomagjából kiszedni, a nyelvet pedig változóval helyettesíteni. A pot fájl előállításának legegyszerűbb módja, ha a lefordítandó sztringeket kirakod egy rfc822-formátumú fájlba[2], gyártasz egy po könyvtárt, a fájlt beteszed a POTFILES.in-be[3] és futtatsz egy intltool-update -p-t.

4, Ha megvan a pot, feltételezzük hogy akinek kell, egy nyelvikód.po fájlt fog belőle csinálni, pl hu.po.

5, Ha van po fájl, akkor egy másik programnak ezt átadva létre lehet hozni a végeredményül szolgáló bővített po fájlt, mondjuk nyelvikód-extended.po néven. A lényeg az, hogy a bemeneti csomagok mindegyikéhez létre kell hozni egy bejegyzést a lefordított sztring+a változóba helyettesített nyelv lefordított neve használatával. A nyelv lefordítására a dgettext[4] használható, az iso-639 domainnel.

Érdekes kérdés, hogy hogyan határozzuk meg a nyelvi kódból, ami a csomag nevében van, a nyelv nevét, amit lefordíttatunk a dgettext() hívással. Nos, erre való az /usr/share/xml/iso-codes/iso_639.xml fájl, ami a nyelvek kódját és nevét xml-ben tartalmazza. Jó kérdés még, hogy az ötbetűs kódokkal (en-za és hasonlók), illetve az iso639-ben nem (csak esetleg az iso639-3-ban) szereplő "kis" nyelvekkel mit csináljunk - nagyon attól tartok, hogy egy külön, csak a nyelveket tartalmazó po fájlt kell generálni és összefésülni az iso-639-cel. Az is efelé mutat, hogy mi van, ha egy nyelv neve nincs lefordítva, de most ugye kellene - honnan fog erről tudomást szerezni a fordítónk és hogyan pakolja be gyorsan és egyszerűen a meglévő mo fájlba? Erre az az épeszű válasz, hogy generálni kell egy saját po fájlt.

[1]: https://translations.launchpad.net/ddtp-ubuntu/ubuntu/+pots/ddtp-ubuntu-main [2]: Ugyanaz, mint amit az apt-cache show foo mutat, ebből nekünk a Description mező kell, csak most az intltool miatt _Description: néven fog futni, illetve oda kell még figyelni az egyes bekezdéseket elválasztó " . " sorok megőrzésére is.

[3]: Általában az intltool kiterjesztés alapján felismeri a forrásokat, de ehhez kiterjesztés nem tartozik, úgyhogy valami ilyet kell használni: "[type: gettext/rfc822deb]Csomagok" - ahol a Csomagok a projekt gyökérkönyvtárában levő kimeneti fájl.

[4]: http://docs.python.org/library/gettext.html

Melléklet: az érintett csomagok listájának beszerzése

Kiadandó parancs: apt-cache pkgnames language-support | grep -E MINTA ahol a MINTA egy csomagnévből és nyelvkódból az alábbi módon áll elő: nyelv=\([a-z]\{2,3\}\)$

language-support-$nyelv language-support-writing-$nyelv language-support-translations-$nyelv language-support-input-$nyelv language-support-fonts-$nyelv

apt-cache pkgnames language-pack | grep -E MINTA

language-pack-$nyelv language-pack-$nyelv-base language-pack-kde-$nyelv language-pack-kde-$nyelv-base language-pack-gnome-$nyelv language-pack-gnome-$nyelv-base

apt-cache pkgnames thunderbird-locale | grep -E MINTA thunderbird-locale-$nyelv

egyes csomagoknál a nyelvkód nem 2-3 betű, hanem 2-5 is lehet: nyelv=\([a-z-]\{2,5\}\)$ apt-cache pkgnames openoffice.org | grep -E MINTA

openoffice.org-help-$nyelv openoffice.org-l10n-$nyelv openoffice.org-hyphenation-$nyelv openoffice.org-thesaurus-$nyelv

apt-cache pkgnames thunderbird-locale | grep -E MINTA thunderbird-locale-$nyelv (igen, ezt külön kell szedni :()