Wdrożenie odpowiedniego mechanizmu wielojęzyczności w WordPressie to dopiero pierwsza część prac związana z udostępnieniem strony w wielu językach. Wtyczka WPML to najpopularniejsze wśród wordpress developerów i polecane przez samych twórców WordPressa rozwiązanie pozwalające rozszerzyć możliwości lokalizacji (l10n) i internacjonalizacji (i18n) w tym systemie. Druga część prac to oczywiście sam proces dodawania tłumaczeń, w której możemy napotkać problemy jeżeli nie zajmujemy się na co dzień tłumaczeniem stron.

W tym artykule pokażę jak podejść do tłumaczenia stron, postów, menu, widgetów, pól ACF i ciągów znaków znajdujących się w szablonie za pomocą wtyczki WPML.

Tłumaczenie jest tym, co przekształca wszystko tak, że nic się nie zmienia.

Günter Grass

Tłumaczenie stron, wpisów (postów) WordPress

Po instalacji WPML i skonfigurowaniu języków, do listy postów zostanie dodana dodatkowa kolumna z flagami. Kliknięcie na symbol plusika tworzy post będący tłumaczeniem wybranego tytułu a klikniecie na symbol ołówka to – jak można się domyślić – edycja istniejącego tłumaczenia:

Tłumaczenie postów WPML

Na obrazku zaznaczyłem jeszcze przełącznik języków na pasku administratora i dodatkowe linki, dzięki którym możemy przejść do listy postów w konkretnym języku. Te elementy zostają dodane automatycznie po instalacji i konfiguracji WPML.

Tworząc treść w dodatkowym języku, możemy znacznie ułatwić sobie proces tłumaczenia tekstu kopiując całą zawartość w języku głównym do pól edycji bieżącego postu. Służą do tego dodatkowe kontrolki w metaboksie o nazwie Język:

Dodatkowy metabox Język dodany do edytora Gutenberg przez WPML

Identycznie sprawa wygląda w przypadku podstron (pages).

Tłumaczenie menu WordPress

Kolejnym elementem, który rzuca się w oczy przy tłumaczeniu strony to wszelkiego rodzaju menu. Aby tego dokonać klikamy w drobny link Translations:

Tłumaczenie menu w WPML

Po odtworzeniu menu zapisujemy je i od tej pory WPML będzie serwował odpowiednią wersję w poszczególnych językach. Nie trzeba dodawać żadnych instrukcji ani edytować szablonu – wszystko dzieje się automatycznie.

Tłumaczenie wyrażeń (string translation) w WPML

Szablony WordPress mogą zawierać w sobie sztywno zapisane wyrażenia. Są to często przyciski typu Wstecz, Dalej, Czytaj więcej itp.

„Sztywny” ciąg znaków w szablonie.

Jeżeli mamy do czynienia z szablonem komercyjnym, prawdopodobnie wspiera lokalizację, wykorzystując szablony .pot. / .po, które można tłumaczyć na różne języki za pomocą takich wtyczek jak Loco Translate.

Integracja własnego szablonu z tym rozwiązaniem, który wykonujemy dla siebie lub konkretnego klienta mija się z celem, ponieważ nie będzie to wykorzystywane a cały proces może być czasochłonny. Do tłumaczenia własnych szablonów wykorzystamy Tłumaczenie wyrażeń czyli String Translation. Aby to działało, jedyne o co musimy zrobić to otoczyć nasze wyrażenia specjalną funkcją. Jeżeli chcemy wydrukować napis funkcją echo, wystarczy podmienić echo „CZYTAJ WIĘCEJ”; na:

<?php _e( "CZYTAJ WIĘCEJ", 'moj-motyw' ); ?>

Jeżeli nie wykonujemy funkcji echo a ciąg jest składnikiem innego wyrażenia, który jest wywoływany później przez echo lub zwraca go funkcja używamy wtedy:

<?php echo _( "CZYTAJ WIĘCEJ", 'moj-motyw' ); ?>

Takie wyrażenia są potem dostępne w WPML. W tym celu specjalny mechanizm w WPML skanuje szablon w poszukiwania takich wyrażeń i dodaje je do bazy:

Automatyczne rejestrowanie wyrażeń do tłumaczenia WPML

Po zaznaczeniu tej opcji „surfujemy” po stronie i jeżeli odwiedziliśmy wszystkie strony z wyrażeniami można przystępować do ich tłumaczenia.

Tłumaczenie fraz w WPML String Translation

Tłumaczenie widgetów WordPress WPML

Tłumaczenie widgetów też nie stanowi większego problemu. Wystarczy dodać do sidebara identyczną kolekcję widgetów, w każdym z nim wybierając język dla którego ma być on wyświetlony.

Tłumaczenie widgetów WPML

Ten widget, który ma się wyświetlić w języku angielskim, wyświetli się tylko w języku angielskim – działa to sprawnie niezależnie od ilości tłumaczeń.

Tłumaczenie pól ACF

Aby wartości pól w Advanced Custom Fields były możliwe do przetłumaczenia, należy zainstalować bezpłatny dodatek o nazwie Advanced Custom Fields Multilingual.

Advanced Custom Fields Multilingual

Wtyczka ta dodaje opcje do edytora własnych pól:

Preferencje tłumaczenia ACF z WPML

Dla każdego pola można wybrać jedną z opcji:

  • Don’t translate – pole jest ignorowane i żadne tłumaczenie nie jest wykonywane ani dostępne dla niego.
  • Copy – wartość pola jest kopiowana z wartości w języku oryginalnym.
  • Copy once – wartość pola niestandardowego jest kopiowana do języka dodatkowego w początkowym procesie tłumaczenia. Pola niestandardowe, które używają akcji jednorazowego kopiowania, nie pojawią się na ekranie Edytora tłumaczeń. Jednak użytkownik może zmienić wartość pola ACF języka dodatkowego, aby różniła się od języka domyślnego, korzystając z ekranu edycji postu.
  • Translate – Umożliwia dowolne przetłumaczenie wartości pól.

Stała ICL_LANGUAGE_CODE

Są sytuacje, których twórcy WPML nie mogli przewidzieć. Wykorzystywanie przeróżnych filtrów, dynamiczne podmienianie standardowych napisów w obcych wtyczkach może stanowić problem. Na szczęście mamy do wykorzystania stałą PHP ICL_LANGUAGE_CODE, która zwraca kod kraju aktualnego renderowania.

Przykładem wykorzystania tej zmiennej w pliku functions.php lub we własnej wtyczce może być chęć podmienienia standardowego placeholdera „—” menu rozwijalnego w Contact Form 7:

function my_wpcf7_dropdown_form($html) {
     if (ICL_LANGUAGE_CODE == "pl"){
         $text = "Temat";
     }
     elseif(ICL_LANGUAGE_CODE == "en"){
         $text = "Subject";
     }   
     else{
         $text = "---";
     }
     $html = str_replace('---', '' . $text . '', $html);
     return $html;
 }
 add_filter('wpcf7_form_elements', 'my_wpcf7_dropdown_form');

Podsumowanie

Mimo, że WordPress nie wspiera wielojęzyczności w standardzie, tłumaczenie stron wykonanych w tym CMSie jest możliwe i co więcej, nie wymaga pójścia na jakiekolwiek ustępstwa. Dzięki WPML możemy skutecznie i stosunkowo łatwo przetłumaczyć stronę niezależnie od tego w jaki sposób powstała. To przyjazne narzędzie dla deweloperów, ponieważ wdrożenie wielojęzyczności we własnych motywach bądź wtyczkach nie wymaga dodatkowego programowania ani rezygnacji z jakichkolwiek funkcjonalności WordPressa. Dla WPML przetłumaczenie podstron, postów, widgetów, formularzy a także pól ACF to natywne i dopracowane działania. Dodatkową zaletą tego rozszerzenia są liczne integracje z popularnymi wtyczkami WordPress.

Oceń artykuł na temat: Tłumaczenie strony WordPress – za pomocą WPML
Średnia : 4.8 , Maksymalnie : 5 , Głosów : 8