Kategória: Linux všeobecne

Zmenené: 6. august 2012

Kompendium prekladov

Stav slovenských prekladov slobodných programov sa stále zlepšuje. Možno nie tempom, ktoré by som si želal, ale zväčšuje sa počet preložených programov. Možno nastal čas zamyslieť sa nad kvalitou týchto prekladov. Tentokrát v zmysle kontinuity, teda aby boli rovnaké reťazce prekladané rovnako. Dá sa to?

Na začiatok si najprv odpoviem: nie nedá sa to, aspoň nie na 100 %! Ale, dá sa tomu aspoň výrazne pomôcť a práve tomu, ako si pomôcť sa budem venovať v tomto článku, pretože aj nástroj gettext na to poskytuje možnosti, ktoré môžu nie len zlepšiť kvalitu prekladov, ale môžu aj ušetriť kopu práce.

Hoci existuje nástroj pocompendium, v tomto článku popíšem postup pomocou štandardných nástrojov gettext.

Vytvorenie kompendia

Kompendium je vo svojej podstate súhrn (zlúčenie) správ a ich prekladov zo všetkých katalógov PO:

msgcat-o compendium.po file1.po file2.po

Pri zlúčení súborov PO dôjde k zlúčeniu rovnakých prekladov, ale pri rozdielnych prekladoch (konfliktných) rovnakého reťazca dôjde k zapísaniu všetkých vyskytujúcich sa foriem do jedného reťazca, a tento bude označený ako nepresný (fuzzy). Tieto konflikty je potom treba vyriešiť ručne:

#, fuzzy
#~ msgid "About..."
#~ msgstr ""
#~ "#-#-#-#-# sk.po (subor1) #-#-#-#-#\
"
#~ "O aplikácii...\
"
#~ "#-#-#-#-# sk.po (subor2) #-#-#-#-#\
"
#~ "O module..."

Pri rozdielnych (konfliktných) prekladoch je možné nastaviť, aby bol použitý len prvý nájdený preklad a všetky ostatné formy prekladu budú ignorované:

msgcat --use-first -o compendium.po subor1.po subor2.po

Pozor, parameter –use-first ovplyvní nie len konfliktné preklady, ale použije tiež len komentár a hlavičku z prvého súboru, ktorý ich obsahuje! Samozrejme, nástroj nie je obmedzený na použitie dvoch súborov, ale môžete ich použiť relatívne neobmedzený počet (v praxi isté obmedzenia existujú).

Vyčistenie komentárov

Vytvorené kompendium bude mať na začiatku súboru hlavičky všetkých použitých súborov, čo ja nepovažujem za najlepší nápad, preto tieto komentáre odstraňujem:

sed -i -e '/^# / d' -e '/^#$/ d' compendium.po

Nepresné preklady

Hoci sú nepresné preklady, či už vzišli z konfliktov pri prekladoch alebo ich nepresným stavom v samotnom preklade, sú nepoužiteľné na inicializáciu alebo aktualizáciu prekladu. V takom prípade je vhodné z kompendia odstrániť všetko, okrem platných prekladov:

msgattrib--translated--no-fuzzy compendium.po > compendium_clean.po

Táto kombinácia odstráni všetky zastarané a nepresné preklady, ako i nepreložené reťazce, a učiní tak kompendium použiteľné na vytváranie a aktualizáciu súborov PO.

Použitie kompendia

Samotné kompendium by bolo nanič, leda ak indikátor konfliktných prekladov (no, ani to nie je málo), ale tu je využitie ani zďaleka nekončí.

Vytvorenie nového prekladu

Vytvorené kompendium potom možno použiť pri inicializácii nového prekladu, a tým predísť opakované mu prekladaniu už preložených vecí:

msgmerge --compendium compendium.po -o subor.po /dev/null messages.pot

Takto vytvorený preklad bude potom obsahovať preklady z kompendia a na prekladateľovi ostáva už len doplniť zvyšok, pri troche šťastia to nebude veľa práce, ale nakoniec každý automaticky preložený reťazce jednak poteší, a jednak zaistí, že rpeklad bude rovnaký ako v iných projektoch, či jeho častiach.

Aktualizácia prekladu

Kompendium možno využiť nie len pri pri vytváraní prekladu nového, ale aj pri aktualizácii existujúceho prekladu:

msgmerge --compendium compendium.po -U subor.po messages.pot

Dokumentácia gettext popisuje iný spôsob aktualizácie, ktorý je vhodný v prípade, že predošlý príkaz zahlási chybu(y), ale ani toto nie je všeliek:

msgcat --use-first -o update.po compendium.po subor.po
msgmerge update.po messages.pot | msgattrib --no-obsolete > subor.po

Výsledok by mal byť rovnaký, ale v prípade konfliktných prekladov tento druhý spôsob používa prvý výskyt prekladu teda použije text z kompendia, pretože je prvý v poradí.

I v prípade aktualizácie prípade môže kompendium pomôcť tým, že vloží preklad známych reťazcov, ktoré potom už prekladateľ nemusí prekladať sám. Dokonca druhý popisovaný postup dokáže nahradiť odlišné preklady a nahradiť ich tými z kompendia.

Doplnenie prekladu

Kompendium sa môže zísť aj pri doplnení neúplne preloženého súboru PO. V tomto prípade je postup rovnaký pri aktualizácii, takže budete potrebovať šablónu (POT). Ak ju z rôznych dôvodov nemáte k dispozícii, môžete skúsiť jednoduchú vec, a to prekopírovať samotný súbor PO do iného súboru, a tento použiť namiesto šablóny:

msgcat --use-first -o update.po compendium.po subor.po
msgmerge update.po subor.po | msgattrib --no-obsolete > merged.po

Pomocou tejto malej barličky možno jednoducho vylepšiť a doplniť existujúci preklad.

Dostupnosť kompendia

Projekt Debian poskytuje na svojej webovej stránke možnosť stiahnuť kompendium zo všetkých prekladov daného jazyka, ktoré sú súčasťou distribúcie Debian. Je to súbor, ktorý má viac ako 30 MB a je generovaný aj s konfliktmi v prekladoch, takže na použitie je potrebné ho prečistiť. Hoci by bolo super dostať preklady do stavu, keď v tomto kompendiu konflikty nebudú, ale toto nepovažujem v dohľadnej dobe za reálne.

Oveľa lepšou možnosťou sa mi zdá, aby si jednotlivé prekladateľské tímy vytvárali pre svojich členov svoje vlastné kompendiá, a tým pomohli k zjednoteniu prekladov. Pýtajte sa teda svojich koordinátorov na kompendium vášho tímu!