![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 30.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
W systemie CMS mam wykaz stron, czyli np: 1. O nas 2. Produkty 3. KOntakt. To widać po zalogowaniu na panel admina. Strony te mam w 3 wersjach jezykowych. Na dashboardzie panelu mam odnośniki do wersji językowych. Jak zrobić aby po kliknięciu na link do strony angielskiej, strona by się przeladowała z zapamiętanym wybranym językiem i zwróciła zawartość po angielsku? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Musisz sobie zrobić klasę obsługi języka.
Ogólnie algorytm wygląda w takich przypadkach tak: (wersja A) 1. ktoś wchodzi pierwszy raz na stronę - sprawdzane jest jaki ma ustawiony język w przeglądarce (nagłówek: Accept-Language). Tam wystąpić mogą frazy typu pl-PL, en itp. Na tej podstawie określasz język klienta i ustawiasz mu język strony na jego. Jeśli nie obsługujesz jego jezyka to ustawiasz na swój domyślny - przykładowo angielski. Na tym etapie nie musisz zapisywać nigdzie żadnej informacji o języku użyszkodnika. Taka klasa odpalana zawsze na początku sama będzie zawsze określała ten język. 2. userowi nie spodobał się wybrany język więc klika na inną wersję językową. W tym momencie zapisujesz mu w ciasteczku język który wybrał. Dodajesz funkcjonalność do klasy by najpierw (zanim sprawdza nagłówek accept-language) sprawdzała czy istnieje ciastko z ustawieniem jezyka - jeśli tak włącza ten język. I teraz przy każdym odwołaniu do strony klasa wybiera język i zapisuje go do jakiejś zmiennej ogólnie dostępnej lub dostępnej z poziomu tej klasy itp. na jej podstawie wyświetlasz strony w wybranym języku. (wersja ![]() Różni się od A tym, że olewasz nagłówek accept-language i jeśli gość nie ma ustawionego ciastka zawsze ustawiasz jeden domyślne wybrany język. Tyle ![]() EDIT: przy wejściu na stronę w danym języku możesz dodatkowo wykrywać taki język i wrzucać go do ciastka. Ten post edytował Sephirus 23.05.2014, 07:05:33 -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 27.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o odczytywanie z nagłówka accept-language, to polecam gotowe klasy. Pełno tego na necie. Ten nagłówek nie jest łatwy do parsowania, łatwo zrobić błędy przez dziką specyfikację RFC: http://www.w3.org/Protocols/rfc2616/rfc261...14.html#sec14.4
One mogą mieć ustawione priorytety, nie muszą być w kolejności od najważniejszego, a nawet jeśli często tak jest, to przy najprostszym sprawdzeniu, tj. dwie pierwsze litery ciągu /zakładając, że są jezyki ang i pol, przy innym języku domyślnie włącza się ang/, może być tak: de_DE, pl_PL;q=1, fr_FR;q=0.7 Z tego wynika, że użytkownik preferuje na równi niemiecki i polski, potem francuski, a angielskiego w ogóle. Strona przeczyta dwa pierwsze znaki - "de", a że nie ma takiego języka to zaoferuje angielski, zamiast polskiego. Rozwiązanie podane wyżej jest uniwersalne, bo skrypt zgaduje język /lub nie w wersji B/, ale nie przywiązuje na siłę do niego. Piszę o tym, bo w wielu miejscach spotykam się właśnie ze sposobem "na dwa pierwsze znaki", a jak widać to nie zadziała nie tylko przy przemieszanej kolejności, ale też w dobrej. No i jakbyś na coś takiego trafił, to lepiej nie korzystać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:59 |