Portál AbcLinuxu, 29. května 2024 21:49

Ako na preklad slobodných programov

3. 10. 2006 | Stanislav Valasek
Články - Ako na preklad slobodných programov  

Máte vo svojom okruhu ľudí, ktorí by radi používali Linux, ale programy, ktoré používajú, nie sú preložené do slovenčiny alebo češtiny? Chceli ste niekedy prispieť do nejakého slobodného programu, ale neviete programovať? V nasledujúcom dvojdielnom seriáli sa oboznámite so spôsobom prekladania slobodných programov.

Ciele:

  1. Prilákať nových prekladateľov a čo najjednoduchšie popísať postup prekladu slobodného softvéru.
  2. Na praktickom príklade ukázať preklad konkrétneho programu.

Úvod

Mnohé slobodné programy používajú na prekladanie rozhrania nástroje GNU gettext, ktoré celý preklad zjednodušujú na preklad hlášok v textových súboroch (s príponami .po/.pot). Tieto súbory sa dajú prekladať v ľubovoľnom textovom editore. Prácu prekladateľa však môžu veľmi uľahčiť grafické programy, ktoré zjednodušujú samotný preklad a výsledok dokážu jednoducho uložiť do výsledného binárneho súboru (s príponou .mo). Tento je už priamo využiteľný prekladaným programom (stačí preklad prekopírovať do príslušného adresára.

Rozhranie slobodných programov, ako sú napríklad dialógy alebo textové hlášky v príkazovom riadku, je najčastejšie v anglickom jazyku. Ak nie, je angličtina veľmi často prvý jazyk, do ktorého je daný program preložený. Ak chcete začať s prekladmi, odporúčam veľmi dobrú znalosť anglického jazyka.

Pár dôležitých pojmov na úvod

Ak to stručne zhrnieme, tak internacionalizáciu riešia programátori a lokalizáciu prekladatelia.

Je nutné si uvedomiť, že internacionalizácia programu zďaleka neznamená iba preloženie textov v jeho rozhraní. Niektoré textové hlášky sú napísané priamo v skriptoch a iných častiach programu, ktoré nie sú priamo preložiteľné pomocou nástrojov GNU gettext. Skoro všetky programy majú možnosti a voľby, ako napríklad Y/N (Yes/No), ktoré tiež môžu byť preložené. Preložené môžu byť aj manuály a dokumentácia, ktorá je k programu priložená, čo je často samostatnou úlohou.

Všeobecne sa dá povedať, že lokalizácia rieši nasledovné oblasti:

Ako si uľahčiť prácu?

Prácu prekladateľa dokážu výrazne zjednodušiť grafické nástroje umožňujúce pohodlnejšiu prácu s .po, .pot a prípadne aj .mo súbormi. Medzi pravdepodobne najznámejšie programy patria nasledujúce:

Ako ukážkový program som vybral kalkulačku Qalculate!. Program môžete stiahnuť priamo zo stránky, ale je veľká šanca, že už bude súčasťou Vašej distribúcie. V mojej aktuálnej distribúcií Ubuntu Dapper už bola distribuovaná verzia 0.9-2-1. Inštalácia bola tým pádom relatívne jednoduchá: sudo aptitude install qalculate-gtk (Pre rmp balík: rpm -U qalculate-gtk.rpm). Po prvom spustení program vyzerá nasledovne:

preklad - qalculate

Napriek tomu, že mám nastavené slovenské lokálne prostredie, program komunikuje po anglicky.

Najprv sa pozrieme, aké jazyky sú v aktuálnej verzii programu podporované. Zo stránky projektu stiahneme zdrojovú verziu programu a zistíme, že v adresári qalculate-gtk-0.9.4/po existuje lokalizácia pre švédčinu - sv.po a nórčinu - nl.po.

Prázdna jazyková šablóna sk.po sa generuje z .pot súboru, ktorý získame buď priamo z distribúcie, alebo môžeme požiadať autora projektu o vygenerovanie aktuálnej verzie .pot súboru.

Ďalej predpokladám, že súbor sk.po máme, takže sa poďme pustiť do reálnej prekladateľskej práce. V ďalšom texte bude paralelne ukázaný postup najčastejšie vykonávaných činností v po editoroch GTranslator a KBabel.

Pri prvom otvorení prázdnej jazykovej šablóny nás GTranslator vyzve na doplnenie dát o preklade, ktoré doplníme nasledovne:

preklad - gtranslator header

Aby sme vyskúšali, ako "hladko" funguje prekladanie a test výsledku, preložíme si texty priamo v úvodnom dialógu: "Keypad", "History" a text tooltipu "Convert units in result". Následne vygenerujeme výslednú - binárnu verziu prekladu. Preklad jedného z textov a generovanie binárneho súboru je znázornené tu:

preklad - gtranslator

A čo s novo vygenerovaným súborom qalculate-gtk.mo? Stačí ho nakopírovať do adresára pre binárne verzie správ. Na Debian GNU/Linux systémoch je to adresár: /usr/share/locale/xx/LC_MESSAGES/, kde xx je kód jazyka, pre slovenčinu "sk" a češtinu "cs".

To docielime príkazmi:

sudo cp qalculate-gtk.mo /usr/share/locale/sk/LC_MESSAGES/
#kópia do adresára pre slovenské preklady

qalculate-gtk

A výsledok je nasledujúci:

preklad - qalculate prvy preklad

Je veľmi vhodné preklad overovať, či už priebežne, ak si nie sme istí správnym preložením konkrétnej hlášky, alebo až na konci prekladu, kde je overenie výsledného prekladu nutnosťou.

Preklad jednej správy v programe KBabel je znázornený na obrazovke nižšie:

preklad - kbabel

Nezistil som ako sa v programe KBabel generuje výsledný binárny súbor; mám podozrenie, že to nepodporuje. Binárny preklad však jednoducho získame zo súboru sk.po pomocou príkazu:

msgfmt -v -o ./qalculate-gtk.mo ./sk.po

Sumarizácia

Na záver krátka rekapitulácia jednotlivých krokov, ktoré budeme musieť spraviť, aby sme preložili konkrétny program a sprístupnili preklad ostatným používateľom:

  1. Oznámte svoj záujem o preklad pôvodnému prekladateľovi alebo lokalizačnému tímu.
  2. Stiahnite a nainštalujte si potrebné nástroje, minimálne GNU gettext (ktorý je často už súčasťou distribúcie) a prípadne niektorý z vyššie spomínaných po editorov.
  3. Získajte najnovšiu verziu anglického po súboru pre prekladaný jazyk, alebo si stiahnite .pot šablónu. Ak chcete aktualizovať preklad, stiahnite po súbor pre váš jazyk. Nastavte korektné údaje o vás, prekladateľskom tíme, cieľovom jazyku a požadovanom kódovaní. Najčastejšie používané sú UTF-8 alebo ISO 8859-2.
  4. Preložte, čo ide ...
  5. Spätne skontrolujte preklad.
  6. Otestujte váš preklad - vytvorením .mo súboru, jeho skopírovaním do adresára LC_MESSAGES pre váš jazyk a spustením aplikácie.
  7. Zašlite preklad späť buď pôvodnému prekladateľovi, alebo priamo potvrdením zmien do verzovacieho nástroja - najčastejšie CVS alebo Subversion. Pokiaľ sa zmeny nedostanú do vašej distribúcie, môžete pokojne používať vami preloženú verziu programu.
  8. Nezabudnite na pravidelné aktualizácie prekladu po vydaní každej novej verzie programu. Najčastejšie sú .po súbory priebežne aktualizované tak, ako programátori pridávajú alebo menia texty a hlášky programu. Nevýhodou je, že niekedy nie je možnosť inštalácie a otestovania takto vytvoreného prekladu.

Záver, nabudúce

V tejto časti sme sa zoznámili s problematikou prekladania slobodných programov a ukázali najpoužívanejšie programy na prekladanie. V nasledujúcej časti bude podrobnejší popis prekladaných súborov, používanie základných príkazov GNU gettext a pripojený je zoznam tipov a trikov na pomoc prekladateľom.

Související články

Ako na preklad slobodných programov - 2
Kontrola pravopisu - I (ispell)
Kontrola pravopisu - II (ASpell)
Kontrola pravopisu - III (fispell)
Pokus o lokalizaci Krusadera
Lokalizace centericq
LogiSim (Java) a jeho lokalizace do češtiny
Scribus: Sháním překladatele
l10n.kde.sk: Hľadajú sa lokalizátori!
Překládání KDE programů

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

3.10.2006 00:46 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
Další možnost je použít online systémy, například Rosetta (na ukázku třeba moje Wammu).
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
3.10.2006 07:06 michal
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
diky za clanek, informacni hodnota velika (pro mne:)

nikdy mne nenapadlo. ze to bude tak easy ... neco prelozim, mozna dalsi clanek by mohl byt neco jako cvs pro bezne uzivatele:)
Marián Kyral avatar 3.10.2006 07:29 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše KBabel
Odpovědět | Sbalit | Link | Blokovat | Admin
Nezistil som ako sa v programe KBabel generuje výsledný binárny súbor; mám podozrenie, že to nepodporuje.

KBabel sice přímo ne, ale pokud si klikneš na poslední ikonu vpravo, tak se ti otevře Catalog Manager. Po nastavení správného adresáře s překlady program najde všechny .po soubory a umožní nejen překlad do binárního tvaru, ale i syntaktickou kontrolu souboru s překladem.

http://kbabel.kde.org/img/catalogmanager.png
3.10.2006 08:40 pavka
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
Mě tu chybí ješte informace o neúplně přeložených textech. Stále nechápu, proč gtranslator některé texty označí jako přeložené, jiné jako neúplně přeložené, nikde jsem nenašel příkaz kterým bych neúplně přeložené texty přesunul do přeložených. Také by se dalo zmínit o tom, že některé texty lze přeložit více způsoby např pro číslovky (1 chleba/5 chlebů) a i toto gettext umožňuje.
3.10.2006 09:48 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
"Neúplně přeložené texty" nebo také "fuzzy" překlad lze přesunout mezi přeložené v gtranslatoru pomocí klávesové zkratky Alt+2, respektive Upravit - Neúplný překlad. tato položka v menu je přepínač a lze jí jak označit překlad jako neúplný tak jej tak i odznačit.

Jinak se připojuji k tomu, že mohlo být zmíněno jak vytvořit překlad pro více podob množného čísla. Co se týče češtiny je potřeba do hlavičky katalogu(cs.po) vložit:

"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

A pokud je u textového řetězce tato možnost, pak se další tvary zapisují pomocí:
msgid "%i of %i node selected; %s. %s."
msgid_plural "%i of %i nodes selected; %s. %s."
msgstr[0] "Je vybrán %i z %i uzlu; %s. %s."
msgstr[1] "Jsou vybrány %i z %i uzlů; %s. %s."
msgstr[2] "Je vybráno %i z %i uzlů; %s. %s.
Oba ukázkové kódy pochází z cs.po pro Inkscape. U nových verzí aplikací poEdit nebo gTranslator se. pokud je v hlavičce katalogu správný záznam a řetězec obsahuje předchozí kód. zobrazí v překladovém poli místa kam lze zapsat jednotlivé varianty(gTranslator to zobrazí jako samostatné okno).
"I'm trying doprdele!"
3.10.2006 12:34 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Ad plural

V tomto pripade veta obsahuje dve cislovky a rozhoduje se podle prvni. Je mozne se ridit podle druhe (nebo podle vsech)?

Jak je se spravne sklonuji jednotky? Ja jsem zvykly na 1 jablko, [2-4] jablka a [5-] jablek. Napr. podle tveho prikladu by bylo 101 jablko, coz me taha za usi. Dokazu si predstavit, ze to asi vzniklo ze slovniho zapisu sto jedno jablko, kdy se cestinar zajimal jen o slovo bezprostredne predchazejici. Ale u cislovky, ktera je dlouha jak tyden, mi prijde prinejmensim usmevne pouzit singular.
3.10.2006 13:18 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Taky mne to napadlo, bohužel ale natolik (n)gettext neznám abych znal odpověď.

Podle mého názoru je to "101 jablko" češtinářsky správně přesně jak jsi to rozepsal, jako "sto jeden objekt", "Sto jedno jablko", i když to tahá za uši. Ale proč tomu tak je, to nevím, na to by spiš odpověděl nějaký češtinář.
"I'm trying doprdele!"
3.10.2006 14:18 Kyosuke | skóre: 28 | blog: nalady_v_modre
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
RTFM... :-D
4.10.2006 00:22 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Dik. My jsme se ale zabyvali trochu necim jinym.
21.11.2006 13:18 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Ad plural V tomto pripade veta obsahuje dve cislovky a rozhoduje se podle prvni. Je mozne se ridit podle druhe (nebo podle vsech)?

Cislo, podle ktereho se to urcuje je definovano v kodu programu:

printf (
  ngettext ("Found %d file.", "Found %d files.", nbr_of_files),
  nbr_of_files
);
3.10.2006 09:16 Spike | skóre: 30 | blog: Communicator | Praha
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
Opravte mě, pokud se mýlím, ale myslím, že UTF-8 není znaková sada.
3.10.2006 15:02 Stanislav Valasek | skóre: 23 | blog: sloboda
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Hmmm, ak myslíš niečo ako kódovanie alebo kódovanie znakovej sady, tak to máš asi pravdu, myslím, že je to presnejší názov.
patička?
hajma avatar 3.10.2006 09:36 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
Autor by si měl zkusit podstupovat podle svého návodu. Zjistil by, že se nikam nedostane.
21 promarněných znaků
3.10.2006 14:57 Stanislav Valasek | skóre: 23 | blog: sloboda
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Díky za info, můžeš to upresniť? Kde a čo nefunguje v uvedenom postupe? Díky.
patička?
hajma avatar 3.10.2006 16:10 hajma | skóre: 27 | blog: hajma | Říčany
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Prázdna jazyková šablóna sk.po sa generuje z .pot súboru, ktorý získame buď priamo z distribúcie, alebo môžeme požiadať autora projektu o vygenerovanie aktuálnej verzie .pot súboru.

Ďalej predpokladám, že súbor sk.po máme, takže sa poďme

jak generuje?
21 promarněných znaků
3.10.2006 17:49 Stanislav Valasek | skóre: 23 | blog: sloboda
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov

Už chápem :-)

Generovanie som preskočil a nechal do druhej časti. Nie je to úplne easy proces. V tejto časti som predpokladal získanie po súboru buď premenovaním pot šablóny (ak ide o nový preklad) alebo premenovaním z iného jazyka, čo nie je úplne kóšer prístup, ale funguje :-)

Inak generovanie je možné spraviť priamo zo zdrojákov pomocou príkazov: xgettext -f ./po/POTFILES.in -o ./po/messages.po a msginit. Viac bude popísané v ďalšej časti alebo manuále gettextu.

patička?
3.10.2006 09:50 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
Článek v celku dobrý, ale chybí mi jedna věc a to jakým způsobem z .pot souboru vygenerovat .po soubor (přejmenovat jej nestačí). Mohl by to autor trochu rozepsat?
"I'm trying doprdele!"
3.10.2006 10:28 spectrum | skóre: 29 | blog: spectrumblog
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Ale stačí... ;-)
3.10.2006 10:37 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Bohužel nestačí, alespoň co mám zkušenost. Taky jsem si to myslel protože jsou sobory vnitřně podobné, ale zkoušel jsem přejmenovat různé soubory .pot na .po a ve všech případech pak poedit i msgfmt zařval, že se nejedná o korektní .po soubor a musel jsem ho naimportovat přes Soubor - Nový katalog z POT souboru, takže tam asi něco jinak bude, jen nevím co.
"I'm trying doprdele!"
3.10.2006 10:37 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
...jen nevím co, a to jsem doufal, že by mi článek mohl objasnit.
"I'm trying doprdele!"
3.10.2006 10:43 spectrum | skóre: 29 | blog: spectrumblog
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
U většiny programů píšou instrukce pro překladatele, s tím, že by to nějak nešlo jsem se nesetkal a zatím jsem pouze přejmenovával. Je pravda, že překládám ve vimu (používám po.vim), s msgfmt jsem neměl problém.
3.10.2006 12:03 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
info gettext:
`xgettext' creates a file named `DOMAINNAME.po'. You should then rename it to `DOMAINNAME.pot'. (Why doesn't `xgettext' create it under the name `DOMAINNAME.pot' right away? The answer is: for historical reasons. When `xgettext' was specified, the distinction between a PO file and PO file template was fuzzy, and the suffix `.pot' wasn't in use at that time.)
Takze tam zadny syntakticky rozdil neni.

Mimochodem kdyz dostanete novou verzi programu, tak v ni je obvykle stary prelozeny PO soubor a novy POT vygenerovany ze zdrojaku bez prekladu (vcetne nevyplnene hlavicky (msgid "")). Takze pouzitim msgmerge PO POT >new.po elegentane vytvorite novy PO, ktery si vezme to potrebne z obou souboru.
3.10.2006 12:06 cornelius | skóre: 11 | Ostrava
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
tak v tom případě jsme asi stahovali nějaké špatné .pot soubory, jinak si to vysvětlit nedovedu.

O msgmerge vím a velmi často jej taky využívám :)
"I'm trying doprdele!"
3.10.2006 14:59 Stanislav Valasek | skóre: 23 | blog: sloboda
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Toto je stručne popísané pomocou gettext nástrojov v dalšej časti článku, Robert vie upresniť, kedy bude publikovaný.
patička?
3.10.2006 18:28 AN
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Odpovědět | Sbalit | Link | Blokovat | Admin
A jaký program pro překlad pro OS Windows ? občas mívám k dispozici pouze ten a rád bych aktualizoval překlad pro Linux mimo něj (OS Linux)?
3.10.2006 18:40 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
POEdit - multiplatformový po editor.
3.10.2006 18:54 AN
Rozbalit Rozbalit vše Re: Ako na preklad slobodných programov
Aha, diky...
13.10.2006 21:27 GeBu | skóre: 27 | blog: zápisky
Rozbalit Rozbalit vše OmegaT
Odpovědět | Sbalit | Link | Blokovat | Admin
Co program OmegaT? Dá se taky použít? Umí taky soubory PO? Nevíte jestli umí xml? Na wikipedii píšou, že by to umět měl, ale nemůžu to tam najít.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.