Zaimplementowałem funkcję obsługi wielu języków, gotową do działania z wieloma językami w każdym, dowolnym momencie przeglądania strony, opartą na modyfikacji adresu URL.
Co ważne, to rozwiązanie nie polega na plikach cookie ani sesjach PHP, czyli powszechnie stosowanych w tego typu przypadkach rozwiązaniach. Obecnie, oprócz angielskiego, dostępna jest wersja polska za pomocą modyfikatora /pl.
I na tym języku poniższe przykłady.
Wygodniej było mieścić modyfikator na końcu adresu URL, w przeciwieństwie do zwykłej konwencji (np. /projects staje się /projects/pl), więc tak też zrobiłem.
W każdym momencie system jest `świadomy` połączenia między rodzicem a dzieckiem oraz dzieckiem a rodzicem, gdy takie połączenia są otwarte. Jeśli użytkownik doda modyfikator języka do adresu URL, system sprawdzi jego odpowiednie połączenie i przekieruje użytkownika do wersji językowej aktualnego widoku.
To dla pewności, że każdy `slug` ma zawsze swojego odpowiednika. Gdy system nie rozpoznaje dziecka w danym języku, powraca do rodzica.
Na przykład
/projekty/pl otwiera stronę Portfolio po polsku. Jeśli modyfikator zostanie usunięty, /projekty automatycznie przekieruje do /projects.
To samo działa w drugą stronę. Jeśli /projects jest dostarczony z modyfikatorem języka, automatycznie przekieruje do /projekty/pl.
Inny przykład:
/about <=> /o-mnie
about/pl przekieruje do /o-mnie/pl, podczas gdy /o-mnie sam (bez modyfikatora języka) przekieruje do /about.