Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Strona w 2 językach..
Forum PHP.pl > Forum > PHP
Rajdon
Witam, jakie rozwiązania polecacie dla strony dwujęzycznej ? Tzn chodzi mi mniej więcej o coś takiego, że uzytkownik po zmianie języka nie zmienia adresu tzn adres strony nie staje się www.mojastrona.pl/en/. Do tego coraz częściej spotykam się z tym że strony zagraniczne rozpoznają język użytkownika i w jego języku podają treśc strony a także tytuł itp.

przemosk
Chcesz pisać wszystko do początku ? Nie lepiej z framework'a skorzystać questionmark.gif?
croc
Możesz zapisywać informację o języku w sesji, a jeśli masz logowanie na stronie, to przypisywać też język zalogowanym użytkownikom. Pamiętaj, że multijęzykowość strony wiąże się z pracą nad wpisami. Każdy najdrobniejszy tekst jest w kilku wersjach.
Rajdon
Cytat(przemosk @ 31.10.2011, 00:20:58 ) *
Chcesz pisać wszystko do początku ? Nie lepiej z framework'a skorzystać questionmark.gif?


Tzn co masz dokładnie na mysli, cms ? Wszytsko piszę od poczatku niemal sam więc żaden cms nei wchodzi w gre.
przemosk
Ja nie pisze o żadnych cms'ach typu wordpress czy inny wynalazek, ale np. framework: symfony, zend itd itp... tam takie kwestie jak różne języki jest już zrobiona, więc po co wymyślać koło od nowa ?
Sephirus
Ja jak już się czymś takim bawię, to zawsze robię wykrywanie języka w 3 krokach:

1. Jeżeli użytkownik ma cookie/sesje z ustawionym językiem - to ten jeżyk mu ustawiam (najwyższy priorytet)
2. Jeżeli użytkownik nie ma cookie/sesji z ustawionym językiem - odczytuje z przeglądarki HTTP_ACCEPT_LANGUAGE biorę pierwszy język i jeśli takowy obsługuje ustawiam go w sesji/cookie
3. Jeżeli ani 1 ani 2 nie jest spełnione ustawiam język domyślny (np. angielski)

Jeżeli user wybiera język klikając na jego flagę przykładowo to wrzucam wybór do sesji/cookie aby był nadrzędny.

Można dodatkowo dać punkt 2a i wykorzystać geolokalizację - ustawiając język dla lokacji - to już kwestia wyboru - ja bardziej patrzę na przeglądarkę.

Co dalej? - Dalej wystarczy zrobić pliki językowe dla każdego języka, z tłumaczeniami treści strony

np.: $lang['home'] = 'Strona główna' dla PL i $lang['home'] = 'Main page' dla EN itp..

Trochę z tym babrania i też bym zastosował coś gotowego - ale wprowadzenie takiego systemu w coś co już istnieje nie jest wielkim problemem, sam system wprowadza się szybko - długo zajmują tłumaczenia... ;P

HTH! wink.gif
Rajdon
Spoko, dzieki w takim razie jaki system polecacie ?
croc
Z gotowych rozwiązań, ja używałem Kohany.

Pytanie czy lepiej robić osobne pliki dla każdego języka, czy jeden wspólny plik, czy może zapisać je w bazie? W osobnych plikach dość łatwo się pogubić, bo wpisów jest mnóstwo, a wszystkie klucze muszą wystąpić we wszystkich plikach. Ja lubię mieć w dodatku pogrupowane te wpisy, więc jak dodaję jakiś tekst, to zwykle ląduje gdzieś w środku. Trochę to upierdliwe dla kilku plików.
Orzeszekk
To zrob sobie klase-singleton Lang, która w konstruktorze bedzie odczytywala info z cookies której wersji językowej uzyc, a nastepnie bedzie ci zwracała wpisy danego języka.

Jesli bedziesz mial w cookies lang=pl to np. Lang::get()->text('tekst_tytulowy') zwroci ci "Witaj kozaku! Zapraszamy w nasze skromne progi!" a jeżeli bedziesz mial w cookies lang=en to Lang::get()->text('tekst_tytulowy') zwroci ci "Welcome Cossack! We are welcome in our humble homepage". Itd itp tongue.gif


Tylko zadbaj o leniwą inicjalizacje tablic z językiem... tj niech jedna metoda inicjuje tablice z jezykiem PL, a druga z językiem ENG (albo jakis stosowny parametr), poniewaz wpisanie np 1000 stringow do tablicy zajmuje troche czasu, i bez sensu by ładował się język angielski gdy używasz polskiego.

Możesz również zrobic to na instrukcji switch, ale wtedy bedzie więcej pisania i więcej ifów więc chyba wcale to szybsze nie będzie. tylko nie pamietam czy w php mozna stosowac indeksy będące łańcuchami, gdyby nie to musialbys uzywac indeksow cyfrowych.
AndyPSV
ja od siebie dodam, ze rozwiazalem to w ten sposob: http://path-of-power.com/php-engine-framew...ith-modules,399

sa foldery, np. /en, /pl a w nich sa pliki jezykowe, ktore sa ladowane w zaleznosci od parametrow (np. mozna ustawic cookie) etc;
mozna sobie zobaczyc rozwiazanie
wNogachSpisz
Warto zerknąć tutaj:
http://pear.php.net/packages.php?catpid=28...nationalization
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.