Portál AbcLinuxu, 7. května 2025 22:48

Překládejte online pomocí Weblate

4. 7. 2012 | Michal Čihař
Články - Překládejte online pomocí Weblate  

Weblate je nástroj, který umožní překladatelům přispívat do projektu prostřednictvím jednoduchého webového rozhraní s těsným navázáním na Git.

Obsah

Výhody a nevýhody online překladů

link

Poskytnutí webového rozhraní pro překládání umožní každému se okamžitě zapojit do překladů. Toto s sebou přináší mnohé výhody, ale i rizika, která musí každý projekt zvážit. Kromě toho, zda vůbec nabízet webové rozhraní pro překlady, vyvstávají i otázky, jak moc omezovat přístup do tohoto systému. Například v phpMyAdminovi se nám osvědčilo mít maximálně otevřený systém, kde každý může snadno opravit případné problémy.

Ale zpět k výhodám a nevýhodám překládání přes web. Celkem zřejmou výhodou je snadný přístup překladatelů k úpravám – pokud najdou v programu nějaký chybně přeložený text, stačí otevřít webový prohlížeč a hned opravit aktuální překlad. Odpadá tedy starost se stahováním aktuálního souboru s překlady a odesílání opraveného zpět. Kromě toho může webová aplikace vynucovat i určitá pravidla pro překlady a tím zvýšit jejich kvalitu.

Mezi největší nevýhody opět patří otevřenost systému – hrozí nekvalitní překlady, musí se počítat s rizikem vandalstvím nebo spamu. Největším problémem jsou asi nekvalitní překlady, ale právě díky snadnému přístupu dojde k jejich rychlému opravení (podobně jako třeba na wiki). Nevýhodou rovněž může pro některé překladatele být používání jiné aplikace, než na kterou jsou zvyklí. Proto by systém měl umožnit i stažení a nahrání celých souborů s překlady, aby tyto pokročilé překladatele neomezoval.

Weblate a motivace jeho vzniku

link

Weblate vznikl v první polovině tohoto roku primárně pro překládání phpMyAdmina, nicméně od té doby ho používá několik dalších projektů. Hlavní motivací pro jeho napsání byly neustálé problémy s Pootle, který jsme pro překlady v té době používali. Nejdříve jsme se samozřejmě snažili najít existující řešení, ale ukázalo se, že našim požadavkům nic nevyhovuje.

Hlavní požadavky a tudíž následně i základní funkcionalita pro Weblate by se daly shrnout do následujících bodů:

Nejvýznamnějším rozdílem se ukázal první bod – přímou integraci s Gitem žádná služba nebo software pro překládání nenabízí a jakýkoliv jiný způsob zaznamenání autorství by byl značně komplikovaný.

Po sepsání požadavků jsem koncem února začal psát a po velmi rychlém vydávání prvních verzí a testování na překladatelích phpMyAdmina vyšla začátkem května verze 1.0. Ta implementovala veškerou funkcionalitu, která byla od začátku plánována a přitáhla dostatek pozornosti i od jiných projektů (použití Weblate například zvažuje Wine). V první polovině července pak vyjde verze 1.1, která vylepšuje spolupráci s Gitem, přinese podporu pro aktualizaci fulltextového indexu samostatným procesem a opraví několik chyb.

Instalace a nastavení

Weblate je napsané pomocí frameworku Django a jeho instalace je v zásadě stejná jako pro další aplikace v Djangu. Nejdříve je potřeba nainstalovat všechny moduly, které Weblate používá:

Django
https://www.djangoproject.com/
Translate-toolkit
http://translate.sourceforge.net/wiki/toolkit/index
GitPython (>= 0.3)
https://github.com/gitpython-developers/GitPython
Django-registration (<= 0.7, 0.8 zatím není podporováno)
https://bitbucket.org/ubernostrum/django-registration/
Whoosh
http://bitbucket.org/mchaput/whoosh/

Po stažení a rozbalení Weblate je potřeba upravit jeho nastavení v souboru settings.py. Minimálně budete muset nastavit připojení k databázi. Pro účely vyzkoušení můžeme použít například SQLite (což rozhodně není dobrý nápad pro produkční nasazení):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3'
        'NAME': 'weblate.db',
    }
}

Poté je potřeba vytvořit tabulky v databázi, prvního uživatele a fulltextový index:

$ ./manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table registration_registrationprofile
Creating table trans_project
Creating table trans_subproject
Creating table trans_translation
Creating table trans_unit
Creating table trans_suggestion
Creating table trans_check
Creating table trans_dictionary
Creating table trans_change
Creating table trans_indexupdate
Creating table lang_language
Creating table accounts_profile_languages
Creating table accounts_profile_secondary_languages
Creating table accounts_profile

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'nijel'): nijel
E-mail address: michal@cihar.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Nyní je již Weblate připraveno k běhu. Pro účely testování se můžeme spokojit s vestavěným serverem (pro produkční nasazení zvolíme například mod_wsgi nebo FastCGI rozhraní):

$ ./manage.py runserver
Validating models...
0 errors found
Django version 1.4, using settings 'weblate.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Jak vidíme, Weblate nyní běží na adrese http://127.0.0.1:8000/ a můžeme ho začít používat.

Přidání projektů

link

Po otevření stránky ve webovém prohlížeči působí poněkud prázdně:

Weblate

Přihlásíme se tedy (pomocí přihlašovacích údajů zadaných při instalaci) a přidáme projekt, který chceme překládat. My pro ukázku budeme používat ukázkový projekt Weblate-hello.

Otevřeme si tedy administrační rozhraní (na adrese http://127.0.0.1:8000/admin/, kde nejdříve vytvoříme projekt s popisem a základními informacemi o překladu a do něj přidáme podprojekt, který již bude obsahovat přímo soubory k překládání. U něj tedy uvedeme git repozitář, odkud se má stáhnout a masku souborů k překladu (v našem případě po/*.po). Po uložení podprojektu dojde automaticky k jeho stažení a načtení souborů s překlady do Weblate, takže to u větších projektů může trvat déle.

Nyní již na titulní stránce vidíme aktuální stav překladu a je možné na něm začít pracovat. Pokud chceme mít snadný přístup k jazyku, do kterého obvykle překládáme, je vhodné si ho nastavit v nastaveních, překlady do těchto se poté objevují na titulní stránce:

Weblate

Překládání

link

Hlavní funkcí Weblate je samozřejmě překládání, pojďme se tedy podívat jak takový překlad vypadá:

Weblate

Jak vidíme, Weblate má podporu pro množné tvary překladu, a to i se zobrazením rovnice, podle které se počítají, takže překladatel si může ověřit, pro jaké počty se jaký tvar použije. Součástí zobrazovaných informací je i výskyt daného řetězce, včetně odkazu na zobrazení zdrojového kódu. Tím je překladateli umožněna kontrola, v jaké situaci se překlad použije.

Pod hlavní částí překladového okna ještě následují záložky s různými informacemi souvisejícími s překladem:

Weblate

Zde například vidíme použití uživatelem definovaného slovníku, můžeme ale zobrazit třeba podobné řetězce nebo řetězce vyskytující se v okolí právě překládaného. Prostě cokoliv by překladatel mohl potřebovat.

Propojení s repozitářem

link

Nyní již tedy můžeme začít překládat, nicméně je ještě potřeba, aby se překlady dostaly zpátky do hlavního repozitáře projektu, a naopak, aby se změny v hlavním repozitáři projevily ve Weblate.

Pro publikování změn jsou dvě možnosti – přidat Weblate právo zapisovat do repozitáře, nastavit adresu pro odesílání (push) u podprojektu a pro uživatele s patřičným oprávněním (ve výchozím nastavení všichni ve skupině Managers) se zpřístupní tlačítko pro odeslání změn.

Pokud nám tento přístup přijde jako moc riskantní, je možné exportovat Git repozitář, který Weblate používá k překladům a používat ho pro slučování změn.

Opačná cesta by měla být více automatizována, a proto Weblate nabízí snadnou možnost notifikace o změnách, stačí otevřít URL a Weblate stáhne změny v repozitáři a pokusí se je sloučit se svojí kopií. Pokud se sloučení nepodaří, správce serveru bude upozorněn mailem a je na něm, aby konflikty vyřešil (Weblate obsahuje nástroj pro minimalizaci konfliktů při práci s po soubory Gettextu). Kromě přímých upozornění pro jednotlivé (pod)projekty, umí Weblate i zpracovat i upozornění, která používá GitHub, a automaticky aktualizovat změněné repozitáře.

Užitečné funkce

link

Nyní již umíme pomocí Weblate překládat a změny odeslat do hlavního repozitáře, ale to není vše co Weblate umí. V následujících odstavcích se podíváme na další zajímavé funkce, které mnohdy jiné nástroje postrádají.

Kontroly překladů

link

Weblate umožňuje automaticky kontrolovat překlady a upozornit překladatele na možné chyby. Tyto kontroly jsou jen upozorněními, to znamená, že jejich porušení nezabrání překladateli v uložení změn a je možné je skrýt pro jednotlivé zprávy a typ kontroly.

Standardní sada kontrol obsahuje z velké části problémy, na které by si později stěžoval Gettext, tedy například chybné formátovací řetězce či chybějící nové řádky na začátku nebo konci překladu. Dále se kontroluje zachování interpunkce na konci věty (s přihlédnutím k různým jazykovým odlišnostem) nebo konzistence překladů mezi podprojekty.

Tyto kontroly je dále možné rozšířit vlastními napsanými v Pythonu.

Podpora mnoha formátů

link

Weblate pro načítání souborů s překlady používá Translate-toolkit, který podporuje mnoho běžně používaných formátů pro překlady (Gettext, Qt, Java, Windows, Symbian a další). Po opatchování je možné přidat i podporu pro Android.

Propagace překladů

link

Pokud zároveň potřebujete překládat více vývojových větví, oceníte automatickou propagaci překladů. Tato funkce automaticky synchronizuje překlad stejného řetězce mezi podprojekty (kde v každém můžete mít jinou vývojovou větev).

Chytré nahrávání souborů

link

Při nahrání souboru se jím nepřepíše původní, ale jen se do něj zapíší veškeré překlady. Tímto se jednak minimalizují změny v souboru a zároveň je zaručeno, že soubor obsahuje aktuální katalog řetězců.

A mnohé další

link

Weblate bylo napsáno po mnohaleté zkušenosti s používáním Pootle a jiných online překladů, takže byla snaha z každého vzít to dobré a vyhnout se problémům, na které jsme narazili. Samozřejmě Weblate není ideálním nástrojem pro všechny situace, ale to, co má dělat, dělá dobře. To dokazují i mnohá nasazení Weblate za jeho krátkou existenci.

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

Týden na ITBiz: Lepší šifrování se stává stále větší prioritou aplikací
Týden na ScienceMag.cz: Hubbleovo napětí by mohl vyřešit pomalu rotující vesmír
Týden na ITBiz: Halucinace balíčků při programování AI
Týden na ScienceMag.cz: Kvantová elektronika v křemíku a diamantu
Týden na ITBiz: DeepSeek nic nemění, umělá inteligence vyžaduje obrovské investice do cloudové infrastruktury

Diskuse k tomuto článku

4.7.2012 07:10 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Odpovědět | Sbalit | Link | Blokovat | Admin
Umí tento nástroj rezervovat překlad, upozornit stálého překladatele na nové hlášky, zpřístupnit komentář programátora ke hlášce, spravovat komentáře překladatele, pracovat s gettextovými kontexty, zachovat historické překlady, definovat hlavičku msgid "" (pravidla pro množná čísla, kontakt na překladatelský tým atd.)?
4.7.2012 08:36 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Ne, ne, ano, ne (jen je zobrazí), ano, ne (od toho je git), částečně (množná čísla a aktualizuje datum a autora posledního překladu).

Většina mi přijde jako dobré nápady, tak jsem to přidal do issue trackeru a mohlo by se to objevit ve verzi 1.2.
4.7.2012 09:10 Milan Vančura | skóre: 2
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Odpovědět | Sbalit | Link | Blokovat | Admin
Co mi na systémech (i ve významu workflow) pro překlady vždy chybělo, byla možnost zpětné vazby - jak to bude vypadat na skutečné obrazovce, v jakém kontextu se překlad použije, PROČ se někomu nelíbí atp. Protože to asi nelze zautomatizovat, šlo by přidat aspoň možnost komentářů k překladům a tím i diskuse o tom, CO je vlastně za problém? Když je Weblate postavený nad gitem, mohl by to umět. Plánujete to?

Příklad použítí:

původní překlad: hlasitost dosahuje maximálního zaplnění

nový: Diskový oddíl je maximálně zaplněný

komentář: "volume" se tady používá ve významu diskový oddíl, je potřeba zkontrolovat překlady v okolí! Viz screenshot: http://uloz.to/...cosi.../

4.7.2012 09:25 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Komentáře v nějaké podobě jsou určitě v plánu. Nicméně větší problém je obvykle někoho donutit k tomu aby se ozval.

Jinak pro zobrazení kontextu překladu je ve Weblate všechno co mě napadlo - zobrazení zdrojového kódu, okolních řetězců a podobných řetězců. Samozřejmě zobrazení ve skutečné aplikaci to nenahradí, ale to není v silách webové aplikace :-).
4.7.2012 10:56 j
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Technicky by to slo udelat tak, ze vyvojar k textum prifari screen (ruco), protoze predpokladam, ze vi kdy kde a v jake situaci se text zobrazi. Pro vetsinu prekladatelu je nejvetsi problem prave to, ze casto prekladaji spoustu veci, o kterych ani netusi v jakem kontextu se zobrazuji a vyvolat ten kontext muze byt i celkem problem - pokud jde o hlaseni chyb ...

Zdrojaky okomentovany tak, aby z toho clovek byl moudrej, se vidi spis vyjimecne ...

Mozna by nebylo od veci seskupovat preklady stringu podle class (trebas), da se predpokladat, ze co do vyznamu budou souviset (= pokud trida resi ukladani na disk, volume bude ve vsech pripadech disk, pokud resi ovladani hlasitosti ...)
4.7.2012 11:11 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
No myslím, že je jednodušší donutit vývojáře psát dokumentaci, než přikládat screenshoty :-).

Obvykle jedna aplikace řeší jednu věc a tudíž je celkem jasné jestli pracuje s diskem nebo hlasitostí. Mnohem častější jsou spíš nejasné překlady nebo nehodící se do kontextu (případně se ani nemůžou hodit, protože ve spoustě programů se nepočítá s různými rody či jinými gramatickými odlišnostmi různých jazyků).
pavlix avatar 4.7.2012 13:34 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Tak ono by až tak nevadilo, že neznalý překladatel něco zblbne. Horší je, že se výsledek dostane mezi lidi a zůstane tam třeba deset let.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Bedňa avatar 4.7.2012 15:47 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Ako napríklad príkaz dselect preložený ako zrušený, pritom ani netušil o čo ide.
KERNEL ULTRAS video channel >>>
4.7.2012 13:45 j
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Heh, nejlepsi je, pokud prekladatel preklada preklad ... pricemz tvurce zdrojoveho prekladu neumi poradne ani vlastni jazyk ...

Rody se daji jeste celkem slusne obslouzit jako unisex.

Jinak to ber tak, ze je rec o nejaky aplikaci, ktera neco umi/neumi => prilozit obrazek ke komentari by mohla umet.
xkucf03 avatar 4.7.2012 22:37 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Jenže dělat to pro všechny řetězce obrázek je nebetyčný opruz. A když už tě napadne, že zrovna tady by obrázek byl potřeba, tak je jednodušší napsat pár slov do komentáře.

To už by se mi víc líbilo nějaké testovací prostředí, kam by ses přihlásil přes VNC/SSH,Spice… a spustil sis tam nejaktuálnější verzi programu – včetně těch překladů.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 4.7.2012 22:33 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Moc si nedovedu představit, že bych jako vývojář vyráběl snímky obrazovek a přikládal je k překladu… na to kašlu. To už spíš napíšu poznámku do komentáře – např. pro krátké řetězce, kde bez kontextu není vidět ani to, v jakém pádu to je, nebo jestli jde o sloveso či podstatné jméno (typický problém při překladu z angličtiny do češtiny). Jediná šance je, že by se ty obrazovky vyráběly automaticky – pokud jsou ty formuláře vytvořené nějak standardně třeba v Netbeansech nebo Qt Creatoru, Glade atd., pak by to šlo…
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Josef Kufner avatar 5.7.2012 18:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Otázkou je, jak moc odtržený od reality takový náhled bude. Kolikrát je značná část okna dělaná programově nebo se divoce slepují widgety připravené bokem. To pak toho na obrázcích moc vidět nebude. I když mohlo by to pokrýt nezanedbatelnou část případů, možná i dost na to, aby stálo za to se tím zabývat.

Zajímavější by asi bylo tu aplikaci prostě spustit a vyfotit -- plně automaticky, samozřejmě. Přičemž by bylo potřeba do ní jen doplnit volbu, která by z příkazové řádky umožnila říct, jaké okno se má otevřít (např. konfigurační dialog). To by mohlo být také užitečné pro testování.
Hello world ! Segmentation fault (core dumped)
xkucf03 avatar 5.7.2012 19:03 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Nebo by mohla jít spustit ve zvláštním režimu/debuggeru a překladatel by měnil texty WYSIWYG stylem. :-)
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
xkucf03 avatar 4.7.2012 22:28 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
šlo by přidat aspoň možnost komentářů k překladům a tím i diskuse o tom, CO je vlastně za problém?
+1 ať se takové věci nemusí řešit příště v diskusi na Ábíčku :-)
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
5.7.2012 19:24 kpt. Pejsek
Rozbalit Rozbalit vše Re: Překládejte online pomocí Weblate
Odpovědět | Sbalit | Link | Blokovat | Admin
Nijel RULEZ! :)

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