![]() |
![]() ![]() |
![]() |
![]()
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ć
![]() |
|
|
![]()
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%) ![]() ![]() |
|
|
|
![]()
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! ![]() -------------------- 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
#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 ![]() 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. -------------------- "The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs |
|
|
![]()
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: 21.08.2025 - 14:21 |