Jak přeložit WordPress šablonu, nebo plugin

Jedna z nejčastějších otázek na diskuzích je, jak mám přeložit šablonu nebo plugin. Titulek dnešního článku je trochu zavádějící, protože mi si ukážeme nejen, jak takovou šablonu přeložit, ale i jak šablonu, kterou vytváříte, připravit pro překlady. Takže nejprve, jak přeložit šablonu, nebo plugin. 

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. Jedná se o soubory s překlady, které lze jednoduše editovat pomocí programu PoEdit, který najdete zde. Po stažení si otevřete po soubor, například en_US a uložte jej jako cs_CZ. Ve složce se vám uloží po soubor a zároveň i soubor cs_CZ.mo. A nyní již můžete překládat. Vždy vyberete frázi, kterou chcete přeložit a její českou variantu vepíšete do spodního řádku.

Úplně dole pak vidíte počet řetězců, i to kolik jich je nepřeložených.

Po přeložení všech řetězců se bude šablona zobrazovat kompletně v češtině. Pokud se vám některé části nepřeloží, je to protože nejsou použity funkce pro překlad. Budete muset soubory šablony otevřít v editoru a anglické části přeložit tam. Jak zjistit, zda je text připraven k překladu si ukážeme dále.

Textdomain

Pro nedostatek představivosti pro překlad, nazývám textdomain, prostě jazykovou doménou. 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. V našem případě tedy cs_CZ.mo.

Definice jazykové domény:

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

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

Funkce pro překlad řetězců

Titulek není zcela přesný, protože samotné tyto funkce řetězce nepřekládají, pouze je přidávají do seznamu frází k překladu. Celkem se jedná o 4 funkce

Funkce __()

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

$nadpis = '

‚.__(‚Nothing found‘,’simple‘).‘

';
echo $nadpis;

Uvnitř funkce je nejprve řetězec, který chceme nahradit přeloženým a následuje jazyková doména.
Důležité u této funkce je, že vrací řetězec jako proměnnou, pokud tedy napíšete:

__(‚Nothing found‘,’simple‘)

nebude to fungovat.

Z příkladu je také vidět, jak určit části šablony, které nejsou připraveny k přeložení:

Nothing found

Toto budete bohužel muset přeložit ručně.

Funkce _e()

Další funkce, která vrací přeložené řetězce. Rozdíl je v tom, že tato je rovnou vypíše.
Příklad:

 





Mám vyzkoušeno, že _e() nelze použít uvnitř jiných funkcí, toto vám nebude fungovat:

edit_comment_link(_e('(Edit)','simple'),'  ','')

Funkce _n()

Tato funkce vrací jednotné, nebo množné číslo podle zadané proměnné.

Zde příklad bude za tisíc slov:

$rating = '3';
$text = sprintf( _n( '1 star', '%s stars', $rating, 'simple' ), $rating );
echo $text;

$rating je číselná hodnota, 1 star je varianta pro jednotné číslo, %s stars je varianta pro množné číslo a simple je jazyková doména.
Díky tomu můžete definovat překlad i pro různé varianty textu, jako je například „1 komentář, 5 komentářů“ a podobně.

Funkce _x()

Poslední funkcí důležitou pro překlad, ale poměrně méně využívanou, je _x(). V případě, že máte jedno slovo, nebo frázi, kterou můžete ve stejném znění použít v různých případech – kontextech, stačí definovat jeden řetězec a k němu definovat kontexty, při který se bude používat.

Příklad:

echo 'Náš první '._x( 'pokus', 'první', 'simple' );
echo 'Náš druhý '._x( 'pokus', 'druhý', 'simple' );

Další funkce používané pro překlad

Pro úplnost zde uvedu i další funkce, které se pro výpis přeložených řetězců používají:

_ex(), _nx(), esc_attr__(), esc_attr_e(), esc_attr_x(), esc_html__(), esc_html_e(), esc_html_x(), _n_noop(), _nx_noop(), translate_nooped_plural()

Tyto funkce budou určitě obsahem jednoho z dalších článků.

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

1 Comment

  1. Dušan Stloukal

    Dobrý den,

    rád bych Vás požádal o radu. Páchám stránky s e-shopem na šabloně Virtue. Bohužel se mi nedaří přejmenovat položky „Your Cart“ a „Search“ na např. „Košík“ a „Hledat“. Program Poedit mi nepomůže, protože mezi jazykovými soubory angličtina z nepochopitelného důvodu schází, plugin Loco translate se tváří, že je přeloženo vše co jen může být a to jak v pluginech, tak ve woocommerce. Ani bych se příliš nebál sáhnout do kódu. Dokážu si ho zkopírovat a otevřít v Adobe Dreamweaver a tam změnit. Bohužel už tuto změnu nedokážu dostat zpátky do WordPressu, protože neznám umístění kódu pro tyto nápisy. Nejsem si ani jistý, co je vlastně třeba překládat a kde ty anglické výrazy hledat – je to otázka woocommerce nebo šablony? Děkuji za každou radu a přeji pěkný den, Dušan

    Odpověď

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *