W tym artykule pokażę parę technik wykonania strony WordPress, która ma być dostępna w kilku językach. Jedna z nich będzie polegać na samodzielnemu wykonaniu potrzebnych elementów, w wyniku czego uzyskamy funkcjonalność wielojęzyczności w WordPress za darmo bez wtyczki.

O samym temacie wspierania wielu języków na stronach WWW napisałem już osobny artykuł: Strony internetowe w kilku językach. Znajduje się tam wiele przydatnych porad odnośnie SEO, hostingu, designu i user experience na takich stronach. Myślę też, że nie nie trzeba tłumaczyć zalet posiadania strony w wielu językach od strony biznesowej.

WordPress nie wspiera dwujęzyczności ani wielojęzyczności „z pudełka”. Wprowadzenie wielojęzyczności do podstawy jest już zaplanowane przez deweloperów ale na to poczekamy jeszcze kilka lat. Z tego powodu, kiedy czytasz na temat obsługi wielu języków w tym systemie CMS to oczywiście większość takich artykułów jest poświęconych wtyczkom. Ponieważ w takich artykułach doszukałem się nieścisłości, postanowiłem napisać własny poradnik z przeglądem dostępnych rozwiązań i pokazać jak w prosty sposób stworzyć stronę w wielu językach z wykorzystaniem wtyczek a także alternatywy w postaci w miarę prostego rozwiązania, które nie wymaga instalowania żadnych dodatkowych rozszerzeń.

Spis treści

  1. Tworzenie osobnych stron dla każdego języka
  2. WordPress Multisite dla wielu języków
  3. Kilka języków w obrębie jednej witryny
  4. Wielojęzyczność w WordPress bez wtyczki
  5. Wtyczki do stron WordPress w wielu językach
  6. Uwagi końcowe

Wszystkie techniki jakie przytoczę w tym artykule to natywne i zgodne z dokumentacją funkcjonalności, które w WordPressie są już dostępne od bardzo dawna. Ponieważ jednak chcemy w 100% spełnić wytyczne i najnowsze standardy, musimy mieć podstawowe pojęcie o tym jak WordPress działa i nie możemy bać się drobnych edycji kodu we własnym szablonie.

Granice mojego języka są granicami mojego świata.

Ludwig Wittgenstein

Tworzenie osobnych stron dla każdego języka – czy to dobre rozwiązanie?

Obsługa wielu języków – niezależnie od wykorzystywanego CMS – zawsze jest dostępna w kilku wariantach. Jedną z nich jest tworzenie osobnych stron. Czy takie rozwiązanie się sprawdza?

Być może tak, szczególnie na stronach firmowych, gdzie poszczególne języki mają być pozycjonowane w różnych krajach. Ta niezależność może być zarówno wadą jak i zaletą. Zaletą tego rozwiązania jest to, że klienci trafiają na swoją wersję bez konieczności wybierania języka. Strony mogą być zainstalowane na różnych hostingach a domeny mogą mieć krajowe końcówki – a jak wiadomo to spora przewaga w przypadku pozycjonowania na dany kraj. Każdą wersję językową można pozycjonować zgodnie ze specyfiką danego języka. Takie rozwiązanie zwalnia też z konieczności rozwiązywania wielu problemów, które pojawiają się wtedy, kiedy z jednego panelu chcemy zarządzać wszystkimi językami.

Wadą wtedy jest to, że nie mogą one w łatwy sposób współdzielić zasobów. Takie rozwiązanie z pewnością nie sprawdzi się w sklepach internetowych, tym bardziej kiedy śledzimy stany magazynowe. Ten drugi WooCommerce „nie wie” kiedy coś zostanie sprzedane i nie zaktualizuje stanów magazynowych – na szczęście nie każdy potrzebuje takiej funkcji. Ruch oraz techniczny autorytet domeny, będzie zdobywany wolniej bo każda domena będzie na niego pracować z osobna. no i na koniec warto wspomnieć, że zarządzanie osobnymi stronami może się stać po jakimś czasie męczące – co może być największą wadą tej metody.

WordPress Multisite dla wielu języków

Na szczęście WordPress może działać w trybie MultiSite, co pozwala tworzyć podrzędne witryny w ramach jednej instalacji. Mamy jedno konto administratora i w ramach tzw. sieci witryn możemy tworzyć poszczególne wersje językowe. Wtyczki i motywy instalujemy raz, zupełnie tak jakbyśmy mieli jedną instalację. W panelu administratora pojawi się wygodny przełącznik „Moje Witryny”. W poszczególnych witrynach możemy rozwijać strony przeznaczone na konkretne języki zamieszczając dowolną metodą prosty przełącznik języków na wszystkich stronach.

Treść w ramach poszczególnych „site” może być edytowana niezależnie a w przypadku chęci uzależnienia logiki od aktualnie wybranej wersji, można dodać wtyczkę lub kod z odpowiednią funkcjonalnością, która zadziała na wszystkich stronach. Multisite jest kompromisem pomiędzy osobnymi stronami a wieloma językami w obrębie jednej witryny co powinno się sprawdzić w większości przypadków.

Kilka języków w obrębie jednej witryny – jakie są tego zalety?

Największą zaletą jest wygodne zarządzanie wszystkimi podstronami z poziomu jednego kokpitu. Takie rozwiązanie sprawdzi się zarówno w przypadku stron firmowych jak i małych blogów. Możemy tłumaczyć menu, widgety, podstrony i posty zachowując do pewnego stopnia niezależność każdej z wersji językowej.

Wadą tego rozwiązania jest to, że trzeba w pewnym stopniu zmodyfikować wiele elementów WordPressa na własną rękę lub wykorzystać płatne wtyczki, które i tak nie będą idealne dla wszystkich – ale do tego jeszcze wrócimy.

Dodatkowo, instalowanie kilku WordPressów lub konfiguracja MultiSite dla prostej strony firmowej z kilkoma podstronami wydaje się być mało optymalnym rozwiązaniem. Dlatego, zachęcam do zapoznania się z bardzo prostą techniką która tym bardziej sprawdzi się w sytuacji, kiedy samodzielnie stworzono motyw WordPress.

Wielojęzyczność w WordPress bez wtyczki

Uwaga: rozwiązanie, które zaprezentuję w tym rozdziale jest przeznaczone dla deweloperów, jeżeli WordPress to dla ciebie tylko szablony i wtyczki przejdź do następnego rozdziału gdzie prezentuję łatwe w użyciu i gotowe wtyczki.

Rozwiązanie to jest jednak jest tak oczywiste, że wiele osób, które profesjonalnie zajmują się stronami internetowymi w pewnym momencie wpada na to niezależnie i dokładnie tak tworzy wszystkie wielojęzyczne strony w WordPressie. Co ciekawe znane wtyczki taki jak WPML i Polylang działają na bardzo podobnej zasadzie udostępniając nam jedynie dodatkowe przyciski i kontrolki, których użycie – jak się sami przekonacie – nie jest wymagane. Technika takiego tłumaczenia strony i szablonów jest możliwa także w innych CMSach.

W tym wariancie, dwie wersje językowe pojedynczej strony to osobne obiekty. Będą miały różne ID i z filozoficznego punktu widzenia to osobne strony, które łączy relacja w którą sami wierzymy 🙂 Na końcu pokażę jak tę relację stworzyć aby przyjęła nieco bardziej formalny charakter.

Strona główna

Kiedy masz stronę główną i chcesz przetłumaczyć ją na język angielski, niemiecki lub chiński, wystarczy zrobić naprawdę bardzo prostą rzecz. Stworzyć identyczną podstronę nadać jej anglojęzyczny tytuł i wprowadzić dokładnie taką samą treść jednak tym razem z wykorzystaniem tekstów i zdjęć w innym języku.

Kiedy zakończysz edycję przejdź do ustawień strony w bezpośrednim odnośniku i uproszczona nazwa do adresu niech ma etykietę językową zgodną z listą ISO 639-1 czyli

  • „en” – zakładając, że tworzymy angielską wersję strony,
  • „de” – w przypadku języka niemieckiego,
  • „zh” – w przypadku chińskiego.

I tak dalej… w przypadku niestandardowych języków sprawdź listę dostępną tutaj: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

Jak widać menu i teksty w widgetach jest w naszym pierwotnym języku ale do tego jeszcze wrócimy.

Tłumaczenie podstron

Kiedy chcesz przetłumaczyć podstrony robimy dokładnie tak samo. Tworzymy osobną stronę, nadajemy jej tytuł w języku docelowym i publikujemy. Aby jednak zachować logiczną strukturę linków i dla uzyskania ścieżki:

https://przykladowa-domena.com/en/about-us/ 

…łączymy podstrony relacją rodzić – dziecko:

Wybór strony nadrzędnej w atrybutach wpisu

Jest to oczywiście natywna funkcja WordPressa która pozwala organizować podstrony w podgrupy ze stroną nadrzędną. Wykorzystanie tej funkcjonalności w kontekście stron w wielu językach jest tutaj nieco kreatywne ale dokładnie tak działa Polylang czy WPML. Poza ładnie wyglądającymi adresami, charakterystyczny znak w URL pozwoli nam wykonać dodatkowe dostosowanie stron w zależności od konkretnego języka:

$lang = "pl";
if (strpos(get_the_permalink(), "/de/") !== false) {
$lang = "de";
}
elseif (strpos(get_the_permalink(), "/en/") !== false) {
$lang = "en";
}

Jak widać, domyślnym językiem jest język polski. Aktualną przeglądaną wersję strony bardzo łatwo wykryć za pomocą charakterystycznego fragmentu w permalinku. Wykrycie języka pozwoli na dalsze dostosowania.

Posty

Aby wykorzystać ten sam mechanizm w przypadku postów, wystarczy stworzyć nadrzędną kategorię, do których będziemy dodawać artykuły napisane w konkretnym języku.

Uproszczona nazwa niech ma kod kraju i dzięki temu uzyskamy efekt, że zarówno posty i strony wraz stroną główną będą się rozpoczynać tym przedrostkiem.

Menu

Menu trzeba wykonać osobne dla każdego języka. Rejestrujemy poszczególne menu-en, menu-de itd…

function register_nav_menus(){
        register_nav_menus( array(
            'menu_cz' => ( 'Menu CZ', 'text_domain' ),
            'menu_pl'  => ( 'Menu PL', 'text_domain' ),
            'menu_en'  => ( 'Menu EN', 'text_domain' ),
            'menu_de'  => ( 'Menu DE', 'text_domain' ),
            'menu_fr'  => __( 'Menu FR', 'text_domain')
        ) );
    }
    add_action( 'after_setup_theme', 'register_nav_menus', 0 );

Z poziomu WordPressa możemy wówczas zarządzać nimi niezależnie, ponieważ WordPress natywnie obsługuje nieskończoną ilość menu:

Zarządzenie menu w wielu językach

Fragment, który odpowiada za wyświetlenie się konkretnego menu otaczamy prostą instrukcją if:

<?php if ($lang == "pl") { wp_nav_menu(array( 'theme_location' => 'menu_pl')); } ?>
<?php if ($lang == "en") { wp_nav_menu(array( 'theme_location' => 'menu_en')); } ?>
<?php if ($lang == "de") { wp_nav_menu(array( 'theme_location' => 'menu_de')); } ?>

Widgety

Dokładnie tak samo postępujemy z widgetami. Rejestrujemy widgety dla każdego z języków wyróżniając je kodem kraju – dla większej wygody. Przechodząc do Wygląd >> Widgety możemy dostosować je sobie dla każdego z języków:

Zarządzenie Widgetami dla każdej wersji językowej

Kiedy umieszczamy widget w szablonie wystarczy teraz wykorzystać instrukcję if:

<?php if ($lang == "en") { dynamic_sidebar("myfooter_en"); } ?>
<?php if ($lang == "de") { dynamic_sidebar("myfooter_de"); } ?>
<?php if ($lang == "pl") { dynamic_sidebar("myfooter_pl"); } ?>

O tym jak rejestrować a nawet budować własne widgety napisałem osobny przewodnik: Tworzenie własnego widgetu WordPress.

Atrybut lang w znaczniku HTML

Jak można się już domyślić:

<?php if ($lang == "en") {  echo "<html lang=\"en-US\">"  } ?>

Hreflang

Hreflang możemy dodać ręcznie za pomocą pól niestandardowych albo nieco bardziej elegancko za pomocą ACF Pro, gdzie z listy rozwijalnej filtrując po tytule będziemy mogli dodawać poszczególne podstrony reprezentującą tę samą stronę w innym języku.

Przykład wykorzystania ACF Pro do dodawania linków hreflang

Zaletą tego rozwiązania jest to, że raz załadowane zdjęcie może mieć różną wartość alt w poszczególnych wersjach językowych. Jeżeli zaś zależy nam na zmianie nazwy pliku, należy załadować owe zdjęcie osobno. Jeżeli nie chcemy tłumaczyć jakiejś podstrony to nie robimy tego a jeżeli chcemy dodać dodatkową stronę dla wybranego języka po prostu ją dodajemy. Kiedy wielojęzyczności nie kontroluje żadna wtyczka, robimy dokładnie to co chcemy. To uniwersalna zasada tworzenia stron WordPress (niezależnie od omawianej funkcjonalności).

Metoda zaawansowana bez powielania wpisów

Za pomocą powyższej metody uzyskaliśmy 100% celu jaki sobie wyznaczyliśmy. Nie dość, że wszystko zostało przetłumaczone to tłumaczenia można sukcesywnie dodawać. Zaletą takiego podejścia jest niezależność a treść może się różnić – nie wszystkie posty muszą być przetłumaczone i w jednym kokpicie WordPressa można dostosować nawet menu i widgety dla każdego języka całkowicie niezależnie.

Z drugiej strony, doskonale wiadomo, że choć uzyskujemy wymaganą przez nas funkcjonalność, takie tłumaczenie podstron i widgetów (tak jak i wykorzystywanie wtyczek Polylang i WPML) jest czymś w rodzaju obejściem (ang. workaround). Oko architekta witryn wielojęzycznych od razu wyłapie, że takie tłumaczenie nie jest zgodne ze wzorcem projektowym – takim jaki zastosowano chociażby w systemie sklepowym PrestaShop. Tam wszystko co można w jakiś sposób nazwać lub opisać ma osobną tabelę w bazie danych do wprowadzania poszczególnych tłumaczeń.

Istnieje druga metoda, którą można wykonać bez wtyczki, której troszkę bliżej do ideału. Dzięki niej w WordPressie będzie można korzystać z funkcji sklepu i WooCommerce będzie mógł poprawnie śledzić / zarządzać stany magazynowe. Tłumaczenia podstron, produktów i wpisów będą posiadać te same ID i nie będziemy musieli tworzyć osobnych podstron. Na czym polega trik?

Idea polega na wykorzystaniu ACF Pro do wprowadzania poszczególnych tłumaczeń tekstów na jednej podstronie. Takie rozwiązanie ułatwia wprowadzanie treści. Możliwość przełączania się pomiędzy językami dadzą nam dwa mechanizmy: WordPress Rewrite API oraz zmiennych w adresie URL (ang. query vars):

add_action('init', 'custom_rewrite_rule', 10, 0);
function custom_rewrite_rule() {
add_rewrite_rule('^pl/([^/]*)/?','index.php?post_type=post&name=$matches[1]&key1=pl','top');
}
add_filter('query_vars', 'foo_my_query_vars');
function foo_my_query_vars($vars){
$vars[] = 'key1';
$vars[] = 'key2';
return $vars;
}

Za pomocą funkcji rewrite choć w adresie będzie „pl”, „en” albo „de” WordPress będzie zwracał tę samą stronę ale z fragmentem zawartości przeznaczonej dla konkretnego języka. Za pomocą query vars lub odczytu bieżącego URL będzie można dołączać opisy, menu i widgety dokładnie tak jak zrobiliśmy to w poprzedniej metodzie.

WooCommerce w wielu językach bez wtyczki.

Przy tej technice trzeba rozwiązać parę innych szczegółowych problemów ale tego już nie opiszę w tym artykule, ponieważ to rozwiązanie stosuję w specyficznych sklepach wykonywanych na zamówienie.

Wtyczki do stron WordPress w wielu językach

Nie będzie zaskoczeniem, że funkcję wielojęzyczności w WordPressie można uzyskać za pomocą gotowych a nawet znanych wtyczek. Korzystanie z wtyczek powoduje, że choć troszkę uzależniamy się od nich, wiele problemów jest już rozwiązanych i nie musimy sami wymyślać koła na nowo. Jaka jest najlepsza wtyczka WordPress do obsługi wielojęzyczności?

Własne metody i wtyczki realizują tę funkcjonalność na kilka sposób:

  1. Ułatwiają zarządzanie osobnymi postami, które reprezentują podstronę w konkretnym języku (Polylang, WPML).
  2. Przechowują treść w obrębie jednego posta (qTranslate)
  3. Wykonują tłumaczenie „w locie”
  4. Linkują osobne witryny w ramach Multisite (MultilingualPress)

Poza wdrożeniem funkcji wielojęzyczności i umożliwieniem wygodnego edytowania treści na różne języki, wtyczki mogą też ułatwiać i automatyzować wykonanie innych czynności (np. dodanie przełącznika języków do menu lub stopki). Takie rozwiązanie sprawdzi się, jeżeli korzystamy z domyślnych motywów WordPressa lub zakupiliśmy płatny szablon w którymś z marketów. Skupimy się na razie na trzech najpopularniejszych wtyczkach (być może zaktualizuję wpis i dojdą kolejne):

Polylang

Zaletą wtyczki jest to, że jest ona darmowa. Niestety wersja darmowa nie współpracuje z WooCommerce – trzeba dokupić płatny dodatek, który i tak powoduje problemy. Mechanizm działania wtyczki Polylang polega na tej filozofii, którą pokazałem w podejściu bez wtyczki – duplikuje posty, menu i widgety. Ułatwieniem są malutkie flagi obok postów, które powodują, że listy z postami są nieco czytelniejsze. Polylang posiada edytor ciągów, który pozwala na przetłumaczenie fraz pochodzących z funkcji wewnętrznych WordPressa.

Polylang pozwala do pewnego stopnia konfigurować własne działanie i (pomijając parę szczegółów) jest przyjazny dla początkującego użytkownika.

WPML

WPML nie jest darmowe, a kiedy wykupimy płatną wersję ta też nie działa z WooCommerce w najtańszej wersji, trzeba „dokupić” jeszcze tę funkcję lub od razu zdecydować się na droższy pakiet aby działała ona z WooCommerce.

Wielojęzyczny sklep WooCommerce – tłumaczenie tytułu i opisu produktu – WPML

WPML w najnowszych wersjach dobrze radzi sobie z synchronizacją cen i stanów magazynowych WooCommerce.

WPML – zablokowana edycja pól WooCommerce w jednym z języków

Istnieje ustawienie, które po prostu blokuje możliwość edycji ceny czy stanów magazynowych. To umożliwia zaciągać dane (np. o magazynie) z jednego domyślnego języku. WPML pozwala też skonfigurować wiele walut.

WPML ma podobnie jak Polylang edytor wyrażeń (ang. string translation), który pozwala robić tłumaczenia dla napisów z szablonów i wtyczek. WPML też duplikuje posty, menu i widgety. To tylko potwierdza, że ta technika wydaje się być najwłaściwsza dla WordPressa jeżeli nie chcemy wykorzystywać mechanizmu MultiSite.

Ustawienia główne WPML

WPML jest w miarę dojrzałą wtyczką i pozwala wykorzystać wiele udogodnień. Potrafi kopiować oryginał domyślnego tekstu a potem możemy edytować go w poszczególnych językach. To oczywiście powoduje szereg zalet (edycja wartości alt dla wcześniej dodanych zdjęć itp…).

Po zakupie droższej wersji wtyczki otrzymujemy dodatkowe rozszerzenia, które mają na celu zapewnić wsparcie WPML dla wybranych i popularnych wtyczek WordPress realizujących istotne funkcjonalności:

Dodatkowe rozszerzenia WPML

WPML też udostępnia wiele ustawień, które pozwalają dostosować jego działanie do konkretnego przypadku. Opcje SEO pozwalają na włączenie ukrytych linków hreflang a te związane z interfejsem pozwalają wybrać kilka trybów edytora. W WPML możemy wybrać osobne domeny dla każdej wersji językowej – co jest bardzo korzystne pod kątem SEO. Wtyczka ta pozwala na ustawienie trybu RTL (ang. right to left) – w językach, których teksty czytamy od prawej do lewej.

Przykład oznaczania motywów kompatybilnych z WPML

Popularność WPML spowodowała, że wiele rozszerzeń i motywów w jakimś stopniu próbuje być z nim kompatybilna – należy to rozważyć jeżeli mamy w nawyku instalowanie wiele popularnych wtyczek. Szablony, które wyjątkowo dobrze współpracują z WPML są oznaczane w marketach z szablonami to samo jest z opcją RTL.

Warto pamiętać, że ta próba pogodzenia wszystkich potrzeb jest okupiona pewnym kosztem – oczywiście wydajnością. Jeżeli chcemy wykorzystywać WPML z multum wtyczek i gotowym szablonem, lepiej od razu wyposażmy się w mocniejszy hosting a po opublikowaniu strony koniecznie zainstalujmy wtyczkę WP-Super Cache do prostej pamięci podręcznej. Wielość opcji, z dodatkowymi integracjami i złożonymi przypadkami użycia może na początku przytłoczyć, dlatego nie wyobrażam sobie, że ktoś bez solidnej wiedzy deweloperskiej stawia sobie sam wielojęzyczny sklep albo witrynę z katalogiem produktów z wykorzystaniem WPML. Zaś z prostą stroną albo blogiem nikt nie powinien mieć problemów.

Zobacz jak wygląda tłumaczenie stron WordPress z wykorzystaniem WPML.

MultilingualPress

MultilingualPress bazuje na filozofii multisite, w wyniku tego nie tworzy bałaganu w ramach jednej instancji WordPressa a wersję są od siebie logicznie oddzielone. Poszczególne posty i taksonomie są połączone relacją, która pozwala na zarządzanie poszczególnymi językami.

Najistotniejsze funkcjonalności i cechy tej wtyczki to:

  • automatycznie generuje linki hreflang,
  • bazuje na rdzennych funkcjonalnościach WordPressa co zapewnia jej kompatybilność z przyszłymi wersjami,
  • pozwala tłumaczyć własne typy postów (Custom Post),
  • pozwala używać różnych albo różnych domen najwyższego poziomu albo sub-domen dla każdego języka – co jest bardzo korzystne z perspektywy SEO,
  • dzięki temu, że nie duplikujemy postów w obrębie jednej instancji WordPressa, zapewniamy większą wydajność.

MultilingualPress choć jest najdroższym rozwiązaniem, niestety, nie umożliwia zarządzać / synchronizować stanem magazynowym w wielojęzycznych sklepach WooCommerce. Rozwiązanie tego problemu w MultilingualPress będzie wymagać dodatkowego kodowania lub dodatkowej wtyczki. Twórcy MultilingualPress deklarują, że ciągle pracują nad odpowiednim rozwiązaniem. Dla wielojęzycznego WooCommerce ze śledzeniem magazynów. Wybór WPML z rozszerzeniem WCML wydaje się być najodpowiedniejszy.

Uwagi końcowe

W przypadku wielu problemów (w WordPressie i w życiu codziennym) nie należy skupiać się na selekcji absolutnie najlepszego rozwiązania (bo takie zazwyczaj nie istnieje) ale takiego, które najbardziej odpowiada pod nasze potrzeby i przypadki użycia.

Podsumowanie zalet i wad opisanych metod

CechaOsobne witrynyWłasne rozwiązaniaWtyczka WPMLWtyczka MultilingualPress
Prostota wdrożeniaNajwyższaŚredniaWysokaWysoka
Kompatybilność z innymi wtyczkamiNajwyższaŚredniaDobraWysoka
Wygoda zarządzaniaNiskaŚredniaNajwyższaWysoka
Zgodność z aktualizacjamiWysoka Wysoka ŚredniaWysoka
Kompatybilność z motywamiNajwyższaŚredniaWysokaNajwyższa
SEONajlepsze DobreNajlepszeNajlepsze
Tłumaczenie e-maili i powiadomieńŁatweTrudneŁatweŁatwe
Koszty początkoweNiskieNiskieŚrednieWysokie
Skalowalność i utrzymanieSłabeSłabeDobreDobre
Możliwości konfiguracyjneNiskieNiskieNajwyższeWysokie
Wsparcie WooCommerceWysokieNiskieNajwyższeŚrednie

Pamiętaj, że do celów testowych możesz wykorzystywać darmowe lub dużo tańsze dystrybucje wtyczek na co pozwala licencja GPL.

Używanie automatycznych translatorów

Wykorzystywanie automatycznych translatorów (Language Translator) nie daje prawdziwej funkcjonalności wielojęzykowej, ponieważ jakość maszynowych tłumaczeń nie nadaje się do zastosowań biznesowych. Dodatkowo, nie otrzymujemy żadnych innych zalet, które niosą ze sobą strony dostępne w kilku językach (np. lepsze SEO, większy ruch i zaufanie ze strony użytkowników).

Zmiana języka – przełączanie języków

Sam przełącznik można dodać za pomocą wspomnianych wtyczek – np. do menu. Jeżeli chcemy dostosować wygląd linków czy selektora, nic nie stoi na przeszkodzie aby dodać własne rozwiązania do menu czy zrobić cały panel z dostępnymi językami i ustawianiami lokalizycyjnymi, wszak są to zwykłe linki.

Jednoczesny wybór języka i lokalizacji

Przełącznik może działać na dwa sposoby – przełączać język i zawsze kierować użytkownika na stronę główną lub do przetłumaczonego odpowiednika strony, na której się znajdujemy – skoro obsłużyliśmy hreflang i wszystkie strony są przetłumaczone to z tym też nie będziemy mieć problemu. Lokalizacja i język mogą być oddzielone lub zintegrowane.

Ciekawostka: o tym, że użycie flag jest pomysłem popularnym ale trochę chybionym znajduje się w artykule, który podlinkowałem we wstępie.

Dostosowanie języka panelu dla użytkowników

Zmiana języka w samym panelu jest prosta niezależnie od wykorzystanej metody. Jest to natywna funkcja WordPressa, która nie wymaga instalowania żadnej wtyczki.

Ustawienia >> Ogólne:

Zmiana języka w ustawieniach WordPrdess

Kiedy jesteśmy administratorem i zatrudniamy ludzi do zarządzania treścią w różnych językach, przydatna może być opcja zmiany języka panelu konkretnego użytkownika:

Zmiana języka panelu dla użytkownika WordPress

Optymalizacja SEO i pozycjonowanie

Utrzymywanie i pozycjonowanie strony internetowej dostępnej w wielu językach nieco się różni od zajmowania się witryną dostępną w jednym języku. Choć WordPress wiele rzeczy zrobi za nas (tym bardziej z odpowiednią wtyczką) warto poznać kilka sposobów na separowania poszczególnych wersji językowych i jak je pozycjonować. Czytaj więcej w artykule: pozycjonowanie strony wielojęzycznej.

Podsumowanie

WordPress nie wspiera natywnie wielojęzyczności co jest jego największą wadą w stosunku do innych systemów CMS. To nie oznacza, że nie można stworzyć wielojęzycznej witryny lub dodać jej kolejne wersje językowe jeżeli znamy i preferujemy ten CMS.

W przypadku prostych stron można zastosować opisane podejście „bez wtyczki” lub dwie najpopularniejsze wtyczki (Polylang i oferująca nieco więcej możliwości WPML). W przypadku złożonych portali i sklepów racjonalnym wyborem okazuje się MultilingualPress lub WPML w bogatszej wersji z pakietem dodatkowych rozszerzeń dla WooCommerce i ACF Pro. Taka decyzja pozwoli w perspektywie wielu lat rozwijać wielojęzyczną stronę WordPress bez przykrych niespodzianek.

Źródła

Oceń artykuł na temat: Wielojęzyczna strona WordPress – kilka języków
Średnia : 4.8 , Maksymalnie : 5 , Głosów : 38