
Jak zrobić tłumaczenie motywu WordPressa w motywie potomnym

Jedna taka wpadka, brak kopii bezpieczeństwa i ponowne tłumaczenie 70 fraz motywu na język polski wystarczy, aby raz na zawsze zapamiętać, że własne tłumaczenie gotowego motywu robimy w motywie potomnym. Nawet jeśli w skórce nie wykonywaliśmy żadnych innych zmian w stosunku do oryginału.
Dzisiaj o tym, jak wykonać tłumaczenie motywu WordPressa w ramach motywu potomnego.
Co chcemy uzyskać
Na pierwszym z poniższych obrazków widzimy motyw, który nie zawiera polskiego tłumaczenia (brak plików pl_PL.po.pl_PL.mo w katalogu languages). Na obrazku drugim widzimy efekt, do którego dążymy – wszystkie frazy są w języku polskim. Trzecia ilustracja pokazuje, że zależy nam na wykorzystaniu motywu potomnego.

Przed

Po

Motyw potomny
Przygotowanie motywu potomnego na tłumaczenie
Oto graficzne ujęcie problemu tłumaczenia motywu w motywie potomnym.

Przygotowanie motywu potomnego na tłumaczenie
Krok 1. Tworzymy motyw potomny. Na rysunku wyżej pokazano, jak wygląda poprawnie utworzony motyw potomny. Jeśli nie wiesz, jak tworzy się motywy potomne, przeczytaj ten tutorial.
Krok 2. Przygotowujemy tłumaczenie motywu w formie plików po i mo. Możemy do tego celu wykorzystać np. program poedit. Jeśli nie wiesz, na czym polega tłumaczenie motywu i jak tłumaczy się motyw za pomocą pliku poedit odwiedź ten tutorial.
Krok 3. Wywołujemy funkcję load_child_theme_textdomain. W motywie potomnym tworzymy plik functions.php i wywołujemy w nim funkcję load_child_theme_textdomain. Dzięki tej funkcji pobierane zostaną wszystkie przetłumaczone frazy motywu zgromadzone w pliku pl_PL.mo motywu potomnego.Funkcja load_child_theme_textdomain powinna być wywołana z wykorzystaniem hooka after_setup_theme:
<?php
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup() {
load_child_theme_textdomain( 'textdomain', get_stylesheet_directory() . '/languages' );
}
?>
textdomain – W przypadku gdy w motywie rodzica nie istniały w ogóle pliki pl_PL.po/pl_PL.mo identyfikator textdomain powinien odpowiadać identyfikatorowi textdomain zdefiniowanemu w motywie rodzica (poszukaj w plikach motywu rodzica wywołania funkcji load_theme_textdomain lub sprawdź, jaki identyfikator używany jest podczas wyświetlania fraz za pomocą funkcji _e lub __ – tu pomocny będzie przykład z plikiem header.php na rysunku wyżej).
W przypadku gdy w motywie rodzica istniały już pliki pl_PL.po/pl_PL.mo (dostarczył je autor motywu), a my w motywie potomnym wprowadziliśmy nowe frazy wymagające tłumaczenia, textdomain powinien dostać zupełnie nową nazwę i to za jej pomocą powinniśmy się odwoływać podczas wyświetlania nowych fraz dodanych w plikach motywu potomnego. Gdy dodatkowo dokonaliśmy zmiany w którymś z plików już istniejących w motywie rodzica (np. single.php), w kopii tego pliku w motywie potomnym powinniśmy – zgodnie z radą WordPress Codex Internationalization – zmienić textdomain na textdomain nadany za pomocą funkcji load_child_theme_textdomain dla motywu potomnego.