GNU Gettext – správa překladů
V předchozím článku o gettextu jsme si ukázali použití této lokalizační knihovny na jednoduchém skriptu. Tentokrát se podíváme na to, jak průběžně s vývojem aplikace udržovat i její překlady a jak se vypořádat s některými lingvistickými lahůdkami způsobenými odlišnou gramatikou jednotlivých jazyků.
Aktualizace překladů
Postup během prvotního překladu aplikace je poměrně jednoduchý. Noční můrou každého překladu jsou však aktualizace. Po změně kódu je potřeba zjistit, zda se musí přeložit nějaké nové texty, případně opravit překlady textů, ve kterých v originálu došlo ke změně. Jedna z velkých předností gettextu spočívá v tom, že se s vývojem kódu počítá a tak gettext obsahuje nástroje podporující průběžné aktualizace překladů.
Následující postup shrnuje všechny kroky potřebné pro aktualizaci originálního anglického textu a jeho českého překladu“
-
Vygenerování PO souboru ze všech zdrojových textů v aktuálním adresáři:
xgettext –from-code=cp1250 *.php
-
Přidání nově zjištěných textů do stávající anglické lokalizace:
msgmerge -U ../locale/en/LC_MESSAGES/messages.po messages.po
Vygenerování binárního MO souboru z PO souboru:
msgfmt ../locale/en/LC_MESSAGES/messages.po -o ../locale/en/LC_MESSAGES/messages.mo
-
Přidání nově zjištěných textů do stávající české lokalizace“
msgmerge -U ../locale/cs/LC_MESSAGES/messages.po messages.po
-
Přeložení nových záznamů v české lokalizaci (soubor ../locale/cs/LC_MESSAGES/messages.po).
-
Vygenerování binárního MO souboru pro českou lokalizaci:
msgfmt ../locale/cs/LC_MESSAGES/messages.po -o ../locale/cs/LC_MESSAGES/messages.mo
-
Odstranění pomocného souboru s texty k přeložení:
rm messages.po
-
Restart http serveru, protože si překlady ukládá do vyrovnávací paměti.
Celý proces aktualizace překladu je zachycen na následujícím obrázku:
Schéma aktualizace překladů (plná velikost, cca 50 kB)
Nástroje pro editaci souborů PO
U větších aplikací začne být ruční editování PO souborů poměrně nepohodlné. Naštěstí existuje několik programů, které nabízejí pohodlné grafické prostředí pro správu souborů s překlady. Nejznámější z nich jsou uvedeny v následujícím přehledu:
Editaci souborů s překlady vám může usnadnit například poEdit (plná velikost, cca 15 kB)
Překlady množných čísel
Občas potřebujeme v aplikaci vypisovat texty, jejichž obsah a gramatický tvar se liší podle doplňované hodnoty. Například:
Máte 1 nový e-mail.
Máte 2 nové e-maily.
Máte 126 nových e-mailů.
K dispozici proto máme funkci ngettext()
, která standardně počítá s angličtinou, kde je jeden jiný tvar množného čísla. Funkce má tři parametry – frázi pro jednotné číslo, frázi pro množné číslo a počet. Podle posledního parametru gettext vybere odpovídající ze dvou frází.
Některé jazyky však mají více tvarů množných čísel – například čeština tři. I to lze pomocí gettextu řešit. Do PO souboru překladu vložíme direktivu:
„Plural-Forms: nplurals=3;
plural=n==1 ? 0 : n>=2 && n<=4 ? 1 : 2;“
Ta podle parametru n
určí, která ze tří variant textu se použije. Tato varianta podmínky odpovídá progresivnějšímu způsobu skloňování (jeden email, 2-4 emaily, 5 a více emailů). Pro konzervativní aplikace (například máte 101 nový e-mail
) lze použít podmínku:
„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;“
Do PO souboru s českým překladem pak umístíme několik tvarů množného čísla:
msgid „You have %s new e-mail.“
msgid_plural „You have %s new e-mails.“
msgstr[0] „Máte %s novou e-mailovou zprávu.“
msgstr[1] „Máte %s nové e-mailové zprávy.“
msgstr[2] „Máte %s nových e-mailových zpráv.“
Různé tvary množného čísla se do výstupu nejčastěji vkládají pomocí funkce printf()
, která umožňuje doplnit číslo do výstupu:
printf(ngettext(„You have %s new e-mail.“, „You have %s new e-mails.“, $n), $n)
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Nové AI modely od Open AI a Google
22. května 2024 -
Moderní trendy ve webdesignu: Top trendy pro rok 2024
12. ledna 2024 -
Thunderbolt 4 vs. OCuLink: Přišel čas na upgrade?
27. května 2024 -
Jak zvýšit CTR vašeho e-mail marketingu
9. září 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024