Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Strona w 2 językach..
Rajdon
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 7.06.2009

Ostrzeżenie: (0%)
-----


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.

Go to the top of the page
+Quote Post
przemosk
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.06.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Chcesz pisać wszystko do początku ? Nie lepiej z framework'a skorzystać (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
croc
post
Post #3





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Rajdon
post
Post #4





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 7.06.2009

Ostrzeżenie: (0%)
-----


Cytat(przemosk @ 31.10.2011, 00:20:58 ) *
Chcesz pisać wszystko do początku ? Nie lepiej z framework'a skorzystać (IMG:style_emoticons/default/questionmark.gif) ?


Tzn co masz dokładnie na mysli, cms ? Wszytsko piszę od poczatku niemal sam więc żaden cms nei wchodzi w gre.
Go to the top of the page
+Quote Post
przemosk
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.06.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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! (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Rajdon
post
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 7.06.2009

Ostrzeżenie: (0%)
-----


Spoko, dzieki w takim razie jaki system polecacie ?
Go to the top of the page
+Quote Post
croc
post
Post #8





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #9





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
AndyPSV
post
Post #10





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


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
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #11





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Warto zerknąć tutaj:
http://pear.php.net/packages.php?catpid=28...nationalization
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 23:40