abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 1
    dnes 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    dnes 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 4
    včera 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | IT novinky

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 2
    včera 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | IT novinky

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 2
    včera 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

    Ladislav Hagara | Komentářů: 2
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 291 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Gettext snadno a rychle: Překladatelská část

    20. 1. 2010 | Daniel Kolesa | Návody | 8795×

    2. Překladatelská část

    link

    Pokud jste pouze překladatel, není nutné znát všechny metody úpravy zdrojového kódu. Spíše musíte znát několik nástrojů pro práci s překlady a jak to celé funguje. Překladatelská část bude počítat se standardní složkou po.

    A. Vytváříme nový překlad

    link

    Jedna z možností, které u překladu programu mohou nastat, je, že do vašeho jazyka ještě program nebyl přeložen. V tomto případě je nutné vygenerovat šablonu pro překlad a tu pak přeložit. Vlezte si proto v terminálu do složky po (nachází se ve složce se zdrojovým kódem programu a soubory jako Makefile.amconfigure.ac).

    cd po

    A vygenerujeme si novou šablonu (.pot soubor) – k tomu slouží program intltool-update:

    intltool-update -p

    Parametr -p řekne programu, aby vygeneroval pouze .pot šablonu. Měl by se tam vytvořit soubor nazevprogramu.pot. Ten si otevřete v textovém editoru a upravte podle části „Testujeme“ ve vývojářské části.

    Po úpravách jej přejmenujte na cs.po (pokud překládáte do češtiny). Teď je soubor připraven k překladu. Pro další překlad budete potřebovat nějaký překladatelský nástroj. Jak už bylo zmíněno ve vývojářské části, dva nejlepší jsou POEditKBabel (jeden je pro Gtk+, druhý pro Qt/KDE). Já doporučuji nainstalovat POedit. Po instalaci si jej spusťte. Zeptá se vás na určité údaje, vyplňte je, budou se zaznamenávat do překladu. Potom si ním už můžete otevřít váš cs.po. Rozhraní je velice jednoduché a nemyslím, že by s ním měl mít někdo problémy. Další věci už popíše následující obrázek:

    poedit

    Lišta menu nahoře:

    Soubor
    • Správce katalogů – umožňuje snadnou správu projektů. Při přidání nového projektu si najde veškeré .po soubory a ukáže jejich stav atd. Při zadávání složky vyberte tu, která obsahuje složku po – ale to je pro nás nyní nedůležité, hodí se pro velké projekty a mnoho jazyků k překladu.
    • Nový katalog – vytvoří nový .po soubor. Většinou nedůležité.
    • Nový katalog z POT souboru – umožňuje vytvořit nový .po katalog automaticky bez úpravy .pot souboru a přejmenování.
    • Exportovat – umožňuje exportovat katalog do HTML souboru.
    Editovat
    • Zkopírovat originál do položky s překladem – překopíruje řetězec k přeložení do řetězce přeloženého. Zkratka Alt+C.
    • Zobrazit odkazy – ukáže řetězec ve zdrojovém kódu.
    • Překlad je nepřesný – označí řetězec jako fuzzy.
    • Editovat komentář – přidá k řetězci nějaký komentář.
    • Nastavení – umožňuje se znova dostat k volbám vaší e-mailové adresy atd.
    Katalog
    • Aktualizovat ze zdrojového kódu – aktualizuje katalog ze souboru POTFILES.
    • Aktualizovat z POT souboru – aktualizuje katalog z .pot souboru který vyberete (tzn. přidá nové položky, které ve vašem překladu chyběly, vymaže staré atd.).
    • Smazat staré překlady – vymaže překlady, které už nejsou v kódu.

    Dále můžete vidět toolbar (nástrojovou lištu) a pod ním seznam přeložených/nepřeložených/starých řetězců. Ty se barevně odlišují:

    • Žluté – řetězec byl v kódu upraven od posledního překladu („neplatné“).
    • Modré – řetězec ještě nebyl přeložen.
    • Hvězdička vlevo – nepřesný překlad.

    Pod seznamem jsou dvě pole. To horní je původní řetězec. Překlad tedy probíhá tak, že pomocí Alt+C zkopírujete horní do spodního a spodní přeložíte. Až bude vše přeloženo, uložte soubor. Pokud budete chtít svůj překlad později aktualizovat, vygenerujte si nový .pot pomocí intltool-update a z menu Katalog vyberte Aktualizovat z POT souboru.

    Nyní, když máte přeloženo, zbývá upravit soubor LINGUAS ve složce po – vypadá nějak takhle:

    fr it km pl

    Prostě kódy zemí oddělené mezerami. Kódy MUSÍ být seřazeny podle abecedy. Upravte si soubor, aby vypadal takto:

    cs fr it km pl

    Jeho obsah závisí na počtu překladů. Pokud program ještě nebyl překládán, je prázdný. Tím by byla práce hotova.

    B. Upravujeme překlad

    link Pokud už program někdo upravoval před vámi, je to jednodušší než vytvářet nový. Postupujte podle návodu pro tvorbu překladu, ale není nutné upravovat soubor LINGUAS a upravovat .pot. Prostě jen vygenerujte nový .pot pomocí intltool-update, otevřete si cs.po a aktualizujte jej z POT.

    C. Program používá jiný systém pro instalaci

    link

    Pokud program využívá jiný systém, jako třeba vlastní Makefile, pak vám intltool-update nebude fungovat a pro vytvoření POT souboru budete muset použít xgettext:

    xgettext --keyword=_ --keyword=N_ --keyword=D_ --keyword=DN_ *.c -o program.pot

    Při překladu postupujte stejně, ale systém skladování po souborů a jejich instalace se může lišit, podle Makefile.

    Pokud je program psán v jazyce Python, místo xgettext použijte pygettext:

    pygettext --keyword=_ --keyword=N_ --keyword=D_ --keyword=DN_ *.py -o program.pot

    Programy, které byste měli znát

    link

    Programy, které se chovají stejně jako volby v POEditu, ale jsou do příkazové řádky. Často mají parametr -D(--directory), který určuje složku, kde se má hledat vstupní soubor(y).

    msgfmt – vygeneruje z .po souboru binární .mo. POEdit vytváří .mo soubory sám při ukládání.

    Použití:

    msgfmt cs.po -o myapp.mo # vytvoří z cs.po myapp.mo
    msginit – vytvoří nový .po soubor z POT souboru. Stejné jako Nový katalog z POT souboru v POEditu.

    Použití:

    msginit -i my.pot -o my.po # vytvoří z my.pot my.po
    msgmerge – stejné jako Aktualizovat z POT souboru v POEditu.

    Použití:

    msgmerge -U my.po my.pot # aktualizuje my.po z my.pot
    msgunfmt – z .mo souboru vygeneruje opět .po soubor.

    Použití:

    msgunfmt myapp.mo -o cs.po # udělá z myapp.mo soubor cs.po
    msgattrib – filtruje řetězce z katalogu podle jejich atributů. Lze je také upravovat (viz man msgattrib(1)).

    Použití:

    msgattrib --translated cs.po # vypíše přeložené řetězce
    msgcat – slučuje .po soubory.

    Použití:

    msgcat one.po two.po -o three.po # sloučí one.po a two.po do souboru three.po
    msgcmp – porovná po a pot soubor, jestli obsahují stejné řetězce.

    Použití:

    msgcmp my.po program.pot # porovná my.po a program.pot
    msgcomm – vypíše společné věci ve dvou po souborech.

    Použití:

    msgcomm one.po two.po # porovná dva po soubory
    msgconv – převede po soubor do jiného kódování.

    Použití:

    msgconf --to-code=utf-8 -o utf.po cp1250.po
    # převede cs1250.po do utf-8 kódování a výsledek zapíše do utf.po
    msgen – udělá anglický katalog z .pot souboru popř. z nepřeloženého nebo částečně přeloženého .po souboru (tzn. vyplní nepřeložené řetězce původním řetězcem).

    Použití:

    msgen my.pot -o en.po # vyplní pot šablonu
    msgexec – spustí nějaký příkaz pro vstupní .po soubor(y), který čte ze standardního vstupu, příkaz aplikuje pouze na přeložené řetězce.

    Použití:

    msgexec -i my.po cat
    # vypíše přeložené řetězce + hlavičku .po souboru (řádky jako language-team atd.)
    msgfilter – funguje podobně jako msgexec, ale příkaz čte ze standardního vstupu, něco upraví a výsledek vypíše na výstup – ne jen překlady jako msgexec, ale celý soubor – a příkaz aplikuje pouze na přeložené řetězce.

    Použití:

    msgfilter -i en.po sed -e 's/error/success/g'
    # nahradí v překladu všechna slova „error“ za „success“
    msggrep – podobné jako grep, ale pro překlady.

    Použití:

    msggrep --msgstr -F -e "error" en.po
    # vypíše všechny přeložené řetězce, které obsahují slovo „error“;
    # pokud nahradíte --msgstr s --msgid, tak vypíše z předloh,
    # pokud nahradíte -F za -E, můžete zadat regulární výraz
    msguniq – sloučí duplicitní řetězce.

    Použití:

    msguniq -o unified.po my.po
    # sloučí duplicitní řetězce v my.po a uloží jako unified.po

    3. Užitečné odkazy, závěr

    link

    Návod se blíží ke konci.. pokud potřebujete další informace, zde je kompletní manuál k gettextu:

    http:#www.gnu.org/software/gettext/manual/gettext.html

    V článku se bohužel nedalo popsat vše, ale alespoň určitý základ a nejdůležitější věci nutné pro správu překladů jsem popsal. Při psaní článku jsem čerpal z výše uvedeného odkazu a vlastních zkušeností (většinou pokus-omyl). Na další věci se také můžete ptát v diskusi. Kompletní projekt jak se standardním Makefile, tak s autotools je přiložen k článku.

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Jan Drábek avatar 20.1.2010 07:08 Jan Drábek | skóre: 41 | blog: Tartar | Brno
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Možná by chtělo ještě zdůraznit, že článek má i druhou část, takhle je to vcelku nešikovně "schované".

    Btw. Velice prakticky napsaný článek ;-)
    01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
    20.1.2010 08:16 CET
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Soubor uložte jako gettexttest.po a nepokoušejte se jej překládat.
    Proc ne??? Ja to vzdycky otevren ve vimu a prekladal jsem. Co je na tom za problem?
    20.1.2010 14:23 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    no, editory určené k tomuto účelu jako poedit při překladu taky zapisují správné informace o kódování v hlavičce - je to jistější že se ti to kódování nerozhodí :)

    ale když soubor máš už částečně přeložený třeba tak můžeš něco dopřekládat i ve vimu
    20.1.2010 18:48 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle

    Nejenom kódování, ale také jméno posledního překladatele, časovou značku poslední úpravy překladu.

    Na druhou stranu musím říct, že já mám univerzální Makefile, který tohle (a spoustu jiných věcí jako odeslání překladu robotovi) za mě dělá a používám taky vim. Grafické nástroje mě neoslovili (asi protože mám zkušenost jen s příšerným linguistem).

    20.1.2010 19:38 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    jasně ;)

    v tvém případě bych radši použil autotools, který udělá vše za tebe
    20.1.2010 19:38 Makefile
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Nechces se o ten svuj Makefile podelit?
    20.1.2010 10:25 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    pekne. este sa v pythone pouziva aj pybabel, napr.:
    pybabel extract -F babel.cfg -o app.pot app
    pybabel update -i app.pot -d . -D app -l sk
    
    20.1.2010 13:57 leko
    Rozbalit Rozbalit vše lokalize
    Super clanok, pekne podrobne popisany.

    Pri odporucani na kde/qt prekladatelsky program by som neoporucal uz kbabel, ten je zastaraly, asi by tam mal byt spomenuty len lokalize. Ten je najlepsi najma pri preklade vacsich projektov. Ma funkcie bez, ktorych sa tazko preklada (translation memory, slovnik, inteligentne vkladanie tagov, kontrola pravopisu na cely .po apod.)
    20.1.2010 14:57 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: lokalize
    Kbabel je zastaralý možno pre používateľov KDE4 (KDE 4, KDE SC 4...). ;) Kbabel podporuje všetko, okrem toho inteligentného vkladania tagov (teda aspoň si myslím, nič špeciálne s tagmi som nikdy nepotreboval robiť).
    belisarivs avatar 20.1.2010 17:14 belisarivs | skóre: 22 | blog: Psychobláboly
    Rozbalit Rozbalit vše Re: lokalize
    Kbabel zatim umi oproti Lokalize navic kontrolu syntaxe. Ale to jde provadet skripty (pology), ktere pak otevrou syntakticky nespravne retezce primo v Lokalize.
    IRC is just multiplayer notepad.
    20.1.2010 18:42 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Vynucení syntaxe ze zdrojového kódu

    Gettext umí podle klíčových slov hlídat syntaxi mezi msgid a msgstr. Například printf(3) escapovací sekvence:

    #: ../src/aosd/aosd_ui.c:242
    #, c-format
    msgid "monitor %i"
    msgstr "monitoru %i"

    Nevíte, jestli lze ve zdrojovém kódu vyznačit, že daný řetězec není formátovací printf řetězec?

    V jednom programu je použito něco jako _("100% during") a xgettext takovému msgid přidává příznak c-format, což je samozřejmě špatně. Kontrolní mechanismy pak křičí, že v překladu nesedí formátovací sekvence kolem procentítka. A mně nebaví opakovaně odmazávat příznak c-format.

    Čekal bych, že gettext něco takového bude umět, protože zrovna tak umí extrahovat kontextové komentáře zdrojového kódu ohledně překladu (často se používá na upozornění překladatelů programátorem, že určité slovo v hlášce je lexikál nebo vlastní jméno).

    20.1.2010 19:36 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Vynucení syntaxe ze zdrojového kódu
    bych to vyescapoval..

    _("100\% during")
    20.1.2010 20:18 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Vynucení syntaxe ze zdrojového kódu
    Skús /* xgettext:no-c-format */
    20.1.2010 22:11 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Vynucení syntaxe ze zdrojového kódu
    To je ono. Dík.
    Josef Kufner avatar 20.1.2010 19:05 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Btw, nevíte o nějakém způsobu, jak v PHP konvertovat .po na .mo, když nemůžu spustit msgfmt?
    Hello world ! Segmentation fault (core dumped)
    20.1.2010 19:34 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    jako přímo z tvého PHP skriptu nějak?
    Josef Kufner avatar 20.1.2010 19:50 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Jo, jo. Mám udělaný v PHP instalátor, který si stáhne zip z repositáře a nainstaluje celou aplikaci (také PHP), zkontroluje nastavení a povytváří všecko co potřebuje, ale na serveru je zakázané exec(), takže je problém s překlady a graphvizem …
    Hello world ! Segmentation fault (core dumped)
    20.1.2010 20:16 ---- | skóre: 33 | blog:
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    to asi nepůjde.. budeš si muset nechat povolit spuštění msgfmt.
    Josef Kufner avatar 20.1.2010 20:24 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Asi budu muset najít nějakou jinou cestu. Já jen jestli třeba nědo neví o implementaci msgfmt v php nebo něco takového ;-)
    Hello world ! Segmentation fault (core dumped)
    Jan Drábek avatar 20.1.2010 19:39 Jan Drábek | skóre: 41 | blog: Tartar | Brno
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Lokálně? (Má smysl dělat něco podobného na serveru, když vlákna Apache/PHP stejně drží do umření starou verzi?)
    01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
    21.1.2010 12:47 EVRAMP | skóre: 3 | Olomouc
    Rozbalit Rozbalit vše Re: Gettext snadno a rychle
    Děkuji za článek.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.