Portál AbcLinuxu, 4. května 2025 02:07

Linuxové překladatelské nástroje III.

3.10.2006 15:23 | Přečteno: 1160× | Za vším hledej Linux

Minulé pojednání jsem věnoval systému lokalizace přes PO soubory. Toto je věnováno dalšímu systému lokalizace, který používá např. KDE a další aplikace založené na Qt knihovnách.

Lokalizace přes TS soubory (Qt)

Lokalizační soubory s příponou ts používá jako výchozí zdroj pro překlady Qt. V podstatě je to XML dokument ve kterém se - na rozdíl od po souboru - každý řetězec vyskytuje v určitém kontextu. Znamená to v podstatě tolik, že zatím co u lokalizace přes gettext stačí přeložit původní řetezec pouze jednou a systém pak nahrazuje u aplikace všechny jeho výskyty jedním překladem, tak v případě ts je nutno přeložit každý řetězec samostatně. Má to však i svou výhodu. Pro různý kontext lze použít různý překlad téhož řetězce originálního textu, kdežto u po je třeba dobře promyslet nejenom obsah překládaného ale i cílového textu. (Možná si někteří vzpomenou na žabomyší spor, který se týkal překladu tlačítka "Budiž" v Gnome)

Výchozí ts soubor se generuje podobně jako u gettextu z předhozeného seznamu souborů

lupdate `find ./zdroj_programu -type f | egrep -e '(c$|h$|cpp$)'` -ts soubor_k_překladu.ts

Hotový překlad se pak převede do binární formy, což je soubor, který má příponu qm. A to tak že buď otevřu .ts soubor v aplikaci linguist a zvolím v menu Soubor -> Release, nebo jej převedu konzolovým nástrojem lrelease

Na rozdíl od gettextu, lokalizace přes Qt nemá pevně dané umístění lokalizačních souborů, ani jejich pojmenování. Zpravidla záleží na programátorovi, kde bude aplikace tyto soubory hledat a pod jakým názvem.
S qm soubory se nejspíš setkáte v adresářích jednotlivých aplikací v /usr/share ale není to pravidlem. Například poměrně známá aplikace Scribus si je rve do adresáře /usr/lib (fuj!). Také pojmenování bývá rozmanité. někdy je místo názvu jen kód cílového jazyka. Někdy je kód jazyka mezi názvem aplikace a příponou qm, atd.

Výhody a nevýhody

Jak už jsem naznačil u po souborů, u ts je výhodou že u řetězce zůstává zachován kontext, a tak překlad může být výstižnější. Na druhou stranu se snadno může stát, že se na nějaký řetězec pozapomene. Dosti výraznou nevýhodou je fakt, že z qm verzí Qt>=3 se ts soubor zpátky vykuchat nedá.

       

Hodnocení: 83 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

3.10.2006 21:20 Boris
Rozbalit Rozbalit vše Re: Linuxové překladatelské nástroje III.
Odpovědět | Sbalit | Link | Blokovat | Admin
Místo toho krkolomného find a spol a shellové gymnastiky nabízí Trolltech čistší řešení: do projektového souboru (mujprojekt.pro) dát toto:
TRANSLATIONS += preklad_cs.ts \
preklad_de.ts \
preklad_ru.ts \
preklad_ar.ts

a pak stačí udělat

lupdate mujprojekt.pro,

a protože v .pro souboru je vždy seznam všech zdrojáků (a ten .pro soubor se seznamem se dá vygenerovat pomocí spuštění qmake -project v projektovém adresáři), tak lupdate ví, odkud má překládané řetězce extrahovat a které překladové soubory vytvořit (nebo updatovat). A s releasem (vytvořením binárních .qm variant) je to stejné:

lrelease mujproject.pro
3.10.2006 21:49 Boris
Rozbalit Rozbalit vše Re: Linuxové překladatelské nástroje III.
A pokud by někoho zajímalo, jak pak v aplikaci překlad načíst, je zde ukázkový kód:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QTranslator translator;

    translator.load("mujprogram_cs");
    app.installTranslator(&translator);
    ...
}

A pokud se předpokládá LC_LANG-aware chování, tak prostě:
    ...
    translator.load(QString ("mujprogram_") + QLocale::system().name());
4.10.2006 09:07 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Linuxové překladatelské nástroje III.
Dík. To jsou věci které jsem neznal.

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