Wielojęzyczna strona WordPress – kilka języków

Web Design Blog

Kategoria:
Web

Data publikacji:
13 stycznia 2020

Autor:
Paweł Mansfeld

Wielojęzyczna strona WordPress – kilka języków

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”. 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ń.

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.

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 ze wtyczek powoduje, że troszkę uzależniamy się od nich a kolejne aktualizacje WordPressa wcale nie muszą z nią współpracować – nawiązuję w tym momencie do chwilowego braku kompatybilności WPML z edytorem Gutenberg, którą na szczęście rozwiązano w następnych aktualizacjach. 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. Zaletą WPML jest to, że ma podobnie jak Polylang coś takiego jak „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.

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…). WPML próbuje „synchronizować” stany magazynowe WooCommerce ale nie jest to kompatybilne z wieloma wtyczkami o czym można się przekonać na forum wsparcia technicznego.

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. 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.

MultilingualPress

Tej wtyczce najbliżej do ideału. Bazuje na filozofii multisite, w wyniku tego nie tworzy bałaganu a wersję są od siebie logicznie oddzielone. Poszczególne posty i taksonomie są połączone relacją, która pozwala na wygodne zarządzanie poszczególnymi językami.

MultilingualPress choć jest najdroższym rozwiązaniem, częściowo współpracuje z WooCommerce i ma chyba najwięcej możliwości z pośród tych trzech wymienionych wtyczek:

  • 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ść.

Niestety, żadna z tych wtyczek nie potrafi sobie poradzić do końca z zarządzeniem / synchronizacją stanem magazynowym w wielojęzycznych sklepach WooCommerce. Wykonanie samodzielnie takiej synchronizacji może być bardzo wymagające pod kątem programistycznym. Wątki na forach z tym problemem (np. w WPML) zdają się nie mieć końca. Twórcy MultilingualPress deklarują, że ciągle pracują nad odpowiednim rozwiązaniem. Dla wielojęzycznego WooCommerce ze śledzeniem magazynów moje drugie rozwiązanie „bez wtyczki” (które traktuje wszystkie wersje językowe wpisów i produktów jako jeden obiekt) wydaje się być najodpowiedniejsze.

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ŚredniaWysokaWysoka
Wygoda zarządzaniaNiskaŚredniaWysokaWysoka
Zgodność z aktualizacjami Wysoka WysokaŚredniaWysoka
SEO Wysoka WysokaWysoka Wysoka
Koszty początkoweNajniższeNiskieŚrednieWysokie
Skalowalność i utrzymanieNajgorszeNiskieŚrednieDobre

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

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ę wtyczka MultilingualPress, która realizuje wielojęzyczność w najlepszy możliwy sposób szanując wewnętrzne mechanizmy CMS. To pozwala w perspektywie wielu lat rozwijać wielojęzyczną stronę WordPress bez przykrych niespodzianek.

Źródła

https://wordpress.org/support/article/multilingual-wordpress/

https://multilingualpress.org/

https://wpml.org/

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


 

Odpowiedz lub skomentuj

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *




Komentarze

Ireneusz

14 stycznia 2020

Z WPLM bym uważał - bardzo spowalniał wczytywanie strony. Było to uciążliwe do tego stopnia, że postanowiono zupełnie zmienić model zarządzania stringami tłumaczeń: teraz strona ma nie wykonywać tak wielu zapytań do bazy, jak poprzednio. Nie wiem, jak się sprawdza ten nowy sposób, bo nie wytrzymałem nerwowo z tym żółwiem, ale może warto spróbować.

Ciekawą alternatywą jest MultilingualPress. O ile wtyczka sama w sobie faktycznie nie obsługuje stanów magazynowych, to jest do tego dedykowana wtyczka. I choć działa ona niezależnie od MultilingualPress, to mam wrażenie, że została zrobiona wyłącznie z myślą o tym rozwiązaniu. Warto do niego też pomyśleć o przełączniku języka/waluty, bo tego chyba też nie ma w standardzie.

Paweł Mansfeld

14 stycznia 2020

Dziękuję za bardzo trafne uwagi. Każda wtyczka, która robi coś tak skomplikowanego jak WPML i stara się pogodzić wiele potrzeb różnych stron (i w dodatku każdego rodzaju użytkownika) będzie spowalniać system - to naturalna kolej rzeczy. Dlatego, kiedy cokolwiek mam do zrobienia i nie ma idealnej wtyczki pod konkretny przypadek użycia wolę zakasać rękawy i zrobić to po swojemu - pod konkretne potrzeby za pomocą funkcji, wtyczek i widgetów. Kiedy nie ma innego wyjścia wolę dodać prosty if w szablonie niż uzależniać się od wtyczek, które są niemal tak skomplikowanie jak cały system CMS.

Wtyczka, o której mowa to pewnie Stock Sync dla WooCommerce - bardzo dobra uwaga bo pominąłem to w artykule. Mimo wszystko uważam, że autorzy WPML jak i MultilingualPress powinni elegancko to rozwiązać w ramach własnej wtyczki, tym bardziej, że Wsparciem WooCommerce chwalą się w materiałach reklamowych a WPML każde sobie za to dodatkowo dopłacać. Kiedy ktoś śledzi magazyn w sklepie wielojęzycznym i nie lokalizuje go, praktycznie musi mieć zapewnioną tak podstawową funkcjonalność.

Piotr

28 stycznia 2020

Szkoda że nie znalazłem tego wpisu wcześniej byłby wielce pomocny. Ostatnio tworzyłem taki sklep wielojęzyczny i wielo-walutowy i ogrom problemów jakie napotkałem przekonał mnie że Wordpress nie nadaje się na duży sklep a już na pewno nie na sklep wielojęzyczny. Problemy z tłumaczeniem i poprawna praca całego systemu i dodatkowych wtyczek. Konieczność stosowania dodatkowych modułów dla rożnych walut i języków. Nie wspomnę jakie to wszystko jest problematyczne gdy integrujemy nasze stany magazynowe z dostawcą.

Taki Prestashop wielojęzyczność i wielo-walutowość ma już wbudowaną i dział to rewelacyjne w porównywaniu do Wordpressa. Następna przewagą tego rozwiązania jest ogrom funkcjonalności które są wbudowane i nie trzeba jak ma to miejsce w Wordpresie instalować dodatkowych wtyczek.

Ja do współpracy Polylang z Woocommerce użyłem wtyczki Hyyan WooCommerce Polylang Integration i jest ona całkiem dobra, niestety ostatnią aktualizację miała 7 miesięcy temu i nie ma gwarancji czy będzie dalej wspierana.

Paweł Mansfeld

28 stycznia 2020

Dziękuję za komentarz. Wielojęzyczność w WordPress wprowadzałem już na wiele różnych sposobów - zawsze popełniałem jakieś błędy, które co prawda nie były widoczne z zewnątrz ale powodowały trudności w rozwijaniu i dostosowywaniu strony. Na początku był pomysł z budowaniem osobnych szablonów dla każdego języka. Jak nie trudno się domyślić, było to bardzo czasochłonne zarówno w budowaniu strony jak i jej edycji (trzeba było przełączać szablony). Potem wpadłem na to, że można prostym ifem ładować różne fragmenty i to rozwiązanie opisałem w tym wpisie. Sprawdza się idealnie przy stronach firmowych gdzie wszystko (łącznie z szablonem) robimy sobie samemu.

WordPress a tym bardziej z wtyczką WooCommerce nie posiada natywnego wsparcia wielojęzyczności i trzeba się z tym po prostu pogodzić. W PrestaShop i w innych systemach natywnie wielojęzycznych od początku mamy to wsparcie - to samo dotyczy lokalizowania - dlatego przy tworzeniu rozbudowanych sklepów w wielu językach lepiej wybrać takie systemy. Oczywiście to nie oznacza, że się nie da stworzyć wielojęzycznego sklepu WooCommerce (bo wiele nawet bardzo dużych sklepów tak działa) ale sami wiemy jakie niespodzianki na nas czekają i ile problemów trzeba rozwiązać :)