![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 3.10.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
na czym oprzeć automat decydujący o wyborze języka strony głównej serwisu? znacie jakieś sprawdzone, skuteczne metody? mam oczywiście chorągiewkę polską i angielską, ale dla wygody uzytkownika przydałoby się automatyczne wykrywanie.
z moich obserwacji wynika, że najdokładniejsza metoda to przeszukiwanie bazy numerów IP, ale to zupełnie niewydajne i nie ma racji bytu na stronie internetowej. |
|
|
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Tja... sprobuj znalezc tak jak to robi php.net - oni zdaje sie nie przeszukuja bazy ip, tylko maja jakis algorytm na ip range (a moze pierdziele?).
Ja zawsze uzywam jezyka przegladarki - jesli uzytkownik uzywa dobrej przegladarki (mozilla, opera) to moze sam zdefiniowac jaki jezyk mu najbardziej odpowiada. Zazwyczaj jak potrzebuje zrobic wybieranie jezyka to uzywam zmodyfikowanego skryptu z phpmyadmin'a - jest bardzo ok, jesli tylko wywalic z niego charset'y ![]() edit: php.net uzywaja bazy ip-to-country - jest tam nawet przykladowy skrypt php! Ten post edytował bregovic 19.10.2004, 20:00:09 -------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 701 Pomógł: 0 Dołączył: 26.06.2002 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
alternatywnym sposobem moze byc wyciagniecie ze stringu
jezyka przegladarki. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%) ![]() ![]() |
jest ustawiane przez przeglądarkę, co znaczy że nie zawsze musi być (myślę że wystarczy do Twoich potrzeb bo w razie jakby przeglądarka nie wysyłała tego, co rzadko się zdarza, to zawsze są chorągiewki) była kiedyś (dosc dawno ![]() ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Ja mam tak: ciasteczka + sesje
Jezeli klient byl juz na tej stronie i recznie wybral jezyk to zapisuje jego wybor w ciasteczkach. Po pierwsze sprawdzam czy ma ciasteczko. Jezeli nie ma ciasteczka to pobieram jezyk przegladarki za pomoca $_SERVER['HTTP_ACCEPT_LANGUAGE']; W ty miejscu mozna zastosowac inne sposoby. Jezeli zaden z tych sposobow nie rozpoznal jezyka przyjmuje domyslny jezyl "PL" ale wtedy uzytkownik moze sam dokonac wyboru i zapisze to w ciasteczkach.
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
@yavaho: Tak, ale nagłówek Accept-Language wcale nie ma wartośi "pl" lub "en". No może czasem, przypadkiem. Generalnie to on ma znacznie bardziej złożoną postać i głupio by było gdyby skrypt w tym momencie zgłupiał.
Podobnie jak rogrog, odsyłam to wątku, który o tym właśnie był. Mieliśmy tam burzliwą dyskusję o rzeczonym nagłówku ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%) ![]() ![]() |
dokładnie tak.
@yavaho: twój skrypt nie sprawdza w ogóle czy język z podanej wartości jest w Twoim serwisie dostępny (nawet zakładając że wartości są dwuliterowe) więc skrypt zgłupieje przy pierwszym wejściu z języka, którego nie masz @warpech: numery IP nie załatwią Ci sprawy, bo przecież nawet jeśli ktoś łączy się z danego kraju to nie musi używać języka tego kraju; do tego dochodzą państwa wielojęzyczne - skąd będziesz znał konkretny język? pomijając już to, że wykluczasz możliwość korzystania przez użytkowników z zagranicznego proxy... generalnie trzeba rozróżnić dwie rzeczy - kraje i języki ![]() -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 3.10.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
właśnie niczego nie chcę wykluczać, tylko szukam sprawdzonej metody
pytam was dlatego, bo znane mi są problemy z zagranicznymi proxy, przeglądarkami które nie mają domyślnie ustawionego polskiego języka i bazy adresów ip o objętości prawie 2MB (jak ip-to-country) póki co, najlepsza wydaje mi się metoda cookie+język przeglądarki, ale jeszcze poszperam w archiwum. dzięki za pomoc i proszę o więcej sprawdzonych rozwiązań :] @bregovic - gdzie moge poczytać o tym jak to robią na php.net i dlaczego nie obciąża im to za bardzo serwera? |
|
|
![]()
Post
#9
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
@warpech: popatrz troche
![]() -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%) ![]() ![]() |
jeśli chodzi o baze IP to nie jest aż tak straszne obciążenie serwera - jedna tabelka z kilkoma polami, proste zapytanie więc nie powinno byc strasznie wolne
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 08:08 |