Řada šablon pro WordPress je nachystána jako translation-ready pomocí Unixového nástroje gettext, případně je lze poměrně snadno lokalizovat. Překlady do češtiny jsou však hotové pouze pro standardní nápisy vytvářené funkcemi WordPressu. Vše ostatní si musíme lokalizovat sami, pokud takovou lokalizaci neobsahuje některý z pluginů (např. pro WooCommerce nebo BuddyPress již lokalizace existují).
Orientace v gettextu
Systém lokalizací v Unixu je poměrně jednoduchý. Všechny texty určené k lokalizacím jsou označeny ve zdrojových kódech speciálními funkcemi, které lokalizují texty, čísla, měny nebo data. Pomocí nástroje xgettext je možné vytahat všechny takové texty do šablonového souboru s koncovkou .pot, který bývá často součástí distribuce šablon označených translation-ready.
Naším úkolem je připravit z této šablony (např. amazing.pot) překladový soubor pro český jazyk, který bude mít koncovku *.po a po jeho překladu (lokalizaci) z něj vyrobit soubor *.mo, se kterým pracuje gettext při lokalizaci WordPressu za chodu.
Vytvoření *.po souboru je jednoduché:
1 |
msginit -i amazing.pot -o cs_CZ.po -l cs_CZ |
Při tvorbě *.po souboru budete dotázáni na váš e-mail, kterým bude váš lokalizační balíček označen.
Překlad lokalizačního balíčku
Na vlastní překlad *.po souboru můžeme využít buď specializovaného (POEdit) nebo obecného (např. vim) editoru. Jde o textový soubor, který popisuje pravidla gramatiky konkrétního jazyka (např. způsob tvorby množných čísel pomocí Plural-Forms) a jednotlivé překladové řetězce.
1 2 3 |
#: content.php:20 msgid "Leave a comment" msgstr "Napsat komentář" |
Uvedený příklad ukazuje, že anglický řetězec Leave a comment, který pochází ze souboru content.php, řádku 20, se přeloží jako Napsat komentář. Pokud je třeba přeložit varianty pro množná čísla, je formát trochu složitější:
1 2 3 4 5 6 |
#: content.php:50 msgid "One comment" msgid_plural "%d comments" msgstr[0] "1 komentář" msgstr[1] "%d komentáře" msgstr[2] "%d komentářů" |
Znak %d zde zastupuje konkrétní počet komentářů. Mimo zástupného znaku %d se můžeme setkat i se zástupným znakem %s označujícím vložený řetězec.
Sestavení lokalizace
Pokud máme přeloženou část nebo celý lokalizační balíček, můžeme sestavit soubor *.mo, se kterým pracuje gettext ve WordPressu, takto:
1 |
msgfmt -o cs_CZ.mo -v cs_CZ.po |
Výsledek můžeme ihned ověřit v prohlížeči.