Jak přeložit stránky ve wordpressu?

Určitě jste se setkali s tím, že jste potřebovali ve wordpressu další jazykovou mutaci. Velká většina šablon a pluginů pro WordPress samozřejmě jako hlavní (a často jediný) jazyk používá angličtinu. V tomto článku si vysvětlíme základy práce s překlady a také si ukážeme práci s pluginem Loco translate, který nám překládání značně zjednoduší.

Nejříve něco o GNU Gettext

WordPress pro veškeré překlady používá knihovnu vydanou pod GNU licencí nazvanou GNU gettext. Pomocí gettextu jsou realizovány lokalizace WordPressu samotného i většiny pluginů a šablon.

K čemu jsou .po .mo soubory?

Pro ukládání jednotlivých textových řetězců gettext používá soubory s příponami .po a .mo, kde jsou uvedeny veškeré texty v původním i přeloženém jazyce. Soubory s příponou .po jsou snadno měnitelné v jakémkoliv textovém editoru (i když doporučuji nějaký specializovaný .po editor, např. Poedit – pro WordPress pluginy a šablony však budeme používat plugin zmíněný níže v textu). Soubory .mo jsou zkompilované .po do binární podoby. Skript následně využívá pouze soubor .mo, proto při jakékoliv změně musíte znovu kompilovat (to už v běžném textovém editoru neuděláte, je k tomu potřeba zmíněný Poedit nebo jiný nástroj).

Jak se překlad implementuje do kódu?

Vývojáře bude zajímat implementace gettextu do kódu vytvářeného díla. Základní použití je velmi jednoduché, stačí veškeré texty v kódu obalit do funkce gettext() nebo případně jejího aliasu _().

Příklad kódu určeného k překladu:
echo _("Ahoj");
– toto je nejjednodušší zápis.

Pro složitější překlady se používají funkce:

Funkce __()

Tato funkce vrací přeložený řetězec, pokud překlad existuje.
Použití:

$title = '<h1>'.__('Nothing found','moje').'</h1>';
echo $title;

variant je více – plurály, kontextové a jiné překlady  – více o tom popisuje článek:  Překlad wordpressu – funkce pro překlad řetězců

 

Je několik možnosti jak přeložit wordpress stránky:

Pro překlad šablony, je nejdůležitější zjistit, zda se ve složce šablony nachází složka, která je většinou pojmenovaná jako lang, nebo podobně a v ní soubory s koncovkou *.po a *.mo.

1. Placená verze

Jeden z nejlepších pluginů pro překlad a multijazyčnost webu je WPML plugin, který se už musí platit. Viz cenová tabulka pluginu. Ten si všechny překlady ( jak šablon tak pluginů) ukládá do databáze a tím zpomaluje rychlost načtení wordpresu. Ale zase s tímto pluginem vytvoříme překlad a i multijazyčný web ve wordpressu.

2. Zdarma

Přeložením *.mo a *.po souborů. Ty se daji přeložit pomocí programu Poedit jak už jsem psal nebo se může použít plugin Loco translate, ktery Vám automaticky vytvoří *.mo a *.po soubory.

banner_fb

Postup při tvorbě nového jazyka u pluginu Loco translate:

  1. Samozřejmě nejdříve nainstalujeme plugin a aktivujeme
  2. Klikneme v nastavení pluginu na New template
  3. Nyní máte prázdný  *.pot soubor, do kterého je potřeba nahrát původní řetězce z kódu – tak učiníte tlačítkem Sync. Poté dáme uložit.
  4. Klikneme na  New language a ze seznamu vyberte jazyk (např. češtinu) a klikněte na Start Translate. Nyní máte vytvořený *.po soubor, dáme zase Sync a uložíme. loco translate-create
  5. V dalším kroku už provedete samotný překlad.  V textech lze poměrně snadno a rychle hledat pomocí textových políček nad řetězci. Můžete upravovat každý text naskenovaný přímo z kódu. Překlady se budou automaticky ukládat do .po souboru. Při editaci stačí kliknout na Save. V textech najdete i řetězce z administrace pluginu / šablony. loco translate-create-language
  6. To by mělo být vše, samozřejmě je tu možnost, že narazíte na nějaké problémy – v takovém případě neváhejte napsat.
  7. Občas se stane, že některé texty tvůrce zapomene obalit do příslušných funkcí gettextu a řetězec se vůbec neobjeví v .po souboru k překladu. V takovém případě nezbývá než hledat v samotném kódu.

Otázky a odpovědi

Otázka: Vyšla nová verze pluginu, přibyly v něm nové texty, ale já v přehledu výrazů nevidím. Co s tím?

Při automatické aktualizaci pluginu si dejte pozor. Zazálohujte si české soubory PO i MO a po aktualizace je nahrajte zpět k pluginu nebo šabloně. Nemusíte se bát, o již hotové překlady byste neměli přijít.

Otázka: Plugin/šablonu jsem počeštil a stejně češtinu nevidím? 

Možná nepoužíváte českou verzi WordPressu. Zkontrolujte, zda v souboru wp-config.php ( je uložený v kořeni vašeho webu ) obsahuje tento příkaz:

define (‚WPLANG’, ‚cs_CZ’);

Pokud ne, příkaz doplňte.

Také může chybět cesta k textdomain nebo se nenačte správná textdomain – jazyková doména. Jedná se o definici domény, do které budou nahrány všechny přeložené řetězce z *.mo souboru, pro aktuální jazyk.

Proto si definujeme cestu ke složce textdomain:

add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
    load_theme_textdomain('test', get_template_directory() . '/languages');
}

Tuto funkci vložte do functions.php a pomocí load_theme_textdomain() jste vytvořili jazykovou doménu ‚test‘ a definovali cestu ke složce s překlady.

Otázka: Proč bych neměl upravovat texty přímo v šabloně nebo pluginu pomocí editoru?

Protože to má několik velkých nevýhod:

  1. ztratíte možnost automaticky plugin nebo šablonu aktualizovat (po aktualizaci budou v souborech původní texty od autora),
  2. přijdete o vícejazyčnost šablony nebo pluginu (v případě vícejazyčného webu),
  3. musíte se vrtat v kódech, kterým nerozumíte,
  4. při drobné neopatrnosti můžete plugin/šablonu rozbít.

Dále pokud chceme mít vícejazyčný web, tak se podívejte na článek o pluginu Polylang.

(1395)