Tłumaczenie szablonu, template, theme

Tworząc stronę z wykorzystaniem WordPress-a zapewne wiele razy przydaje się możliwość wprowadzenia kolejnej wersji językowej lub przetłumaczenie na nasz ojczysty język. Jeśli korzystasz z gotowego szablonu, często zdarza się, że jest w języku angielskim co nie wygląda zbyt atrakcyjnie na stronie. Wtedy wiedza jak wprowadzić tłumaczenie lub uruchomić kolejną wersje językową strony staje się niezbędna.

Od czego zacząć?

Na wielojęzyczność strony zbudowanej na podstawie WordPress-a składa się z elementów: Pliku z tłumaczeniem wszelakich opisów, etykiet które są bardzo rzadko zmieniane oraz tych tekstów, które można modyfikować za pomocą CMS-a. Jeśli korzystamy z gotowego szablonu to najczęściej pliki z tłumaczeniami znajdują się w folderze szablonu o nazwie languages a w nim są pliki z rozszerzeniami .mo i .po. Nazwy tych plików składają się z 2 części: symbolu języka i symbolu kraju np.: pl_PL.po, pl_PL.mo. Różnica pomiędzy plikami .mo i .po jest taka, że plik .po jest plikiem tekstowym, który można otworzyć nawet za pomocą najprostszego notatnika, natomiast .mo to plik skompilowany (docelowy) wykorzystany już w wersji językowej strony. Jak się zabrać za tłumaczenie? Najlepiej za pomocą darmowego programu „poedit”, który można pobrać z strony: poedit.net/. Ten prosty i intuicyjny soft pozwala nie tylko edytować tekstowe pliki .po ale również skompilować je w wyniku czego otrzymujemy pliki .mo.

Jakie funkcje wykorzystać?

Kiedy mamy już przetłumaczone pliki w odpowiedniej wersji językowej, to aby można było z nich skorzystać trzeba użyć odpowiednich funkcji w szablonach strony. O ile gotowe szablony już są gotowe szablony raczej są gotowe i nie trzeba w nich nic zmieniać, to jeśli tworzymy własny to niezbędne będzie wykorzystanie kilku mechanizmów. Funkcji do wykorzystania jest sporo i różnice między nimi są małe, choć znaczące i są następujące:

__(), _e(), _n(), _x(), _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()

Z mojego doświadczenia wynika, że tak naprawdę najczęściej używane są: _e() __(). Różnica pomiędzy tymi dwoma jest taka, że funkcja __() zwraca wartość, natomiast _e() ją wyświetla (wypisuje). Dokładnych opisów i zastosowań nie będę opisywał ponieważ jest to szczegółowo zrobione na stronach (niestety w języku angielskim):

https://codex.wordpress.org/Function_Reference/_2
https://codex.wordpress.org/Function_Reference/_e

Jak uruchomić tłumaczenie w własnym szablonie?

O ile nie ma problemu, z tłumaczeniem gotowego szablonu, bo ma już aktywne tłumaczenie, to natomiast jeśli chcemy uruchomić w szablonie przygotowanym samodzielnie, to trzeba je aktywować i wskazać odpowiedni folder z plikami językowymi.

W pliku: functions.php

if ( ! function_exists( 'translate_setup' ) ) :
    function translate_setup() {
         load_theme_textdomain( 'theme', get_template_directory() . '/languages' );
    }
endif;
add_action( 'after_setup_theme', 'translate_setup' );

Tłumaczenie treści w CMS-ie

O ile chcemy aby strona była jedno języczna to ten krok już nic więcej nie wniesie. Natomiast jeśli niezbędna jest nam wielojęzyczność to już same pliki opisane wcześniej nie rozwiążą problemu. Jak to w WordPress-ie bywa z rozwiązaniem są wtyczki (plugin-y). Bez problemu można odnaleźć wiele które spełnią oczekiwania jednak z powodu ich mnogości stajemy przed dylematem które wybrać. Proponuję następujące:

Każdy z proponowanych przeze mnie plugin-ów ma swoje wady i zalety. Nie jestem jednoznacznie wskazać ten lepszy ponieważ wszystko zależy od projektu, który się realizuje i od tego co w nim chcemy zrobić i do czego wykorzystać, dlatego decyzję pozostawiam Wam.

Podsumowanie

– tłumaczenie plików
– uruchomienie tłumaczeń w plikach
– tłumaczenie w CMS-ie
– niezbędne plugin-y

PHP

Next article

Migracja do PHP 5.6