![]() |
![]() ![]() |
![]() |
![]()
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.
|
|
|
![]()
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) ?
|
|
|
![]()
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.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 7.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
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 ?
|
|
|
![]()
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) |
|
|
![]()
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 ?
|
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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%) ![]() ![]() |
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 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
Warto zerknąć tutaj:
http://pear.php.net/packages.php?catpid=28...nationalization |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 23:40 |