Portál AbcLinuxu, 7. května 2025 22:48
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.
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 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.
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á:
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.
Po otevření stránky ve webovém prohlížeči působí poněkud prázdně:
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:
Hlavní funkcí Weblate je samozřejmě překládání, pojďme se tedy podívat jak takový překlad vypadá:
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:
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.
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.
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í.
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.
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.
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).
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ů.
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.
š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
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.