Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak wykryć kraj...
mihow
post 5.06.2004, 16:59:42
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 15.09.2003
Skąd: Polska / Płock

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


Szukałem na tym forum, ale nie znalazłem. Może źle szukam.

Jak sprawdzić z jakiego kraju oglądana jest dana strona? Chodzi mi o to, że chcę wyświetlić stronę w odpowiedniej wersji jezykowej...
Go to the top of the page
+Quote Post
hawk
post 5.06.2004, 17:07:01
Post #2





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Do tego nie jest ci potrzebny kraj, tylko język. A to jest już coś innego.
Generalnie: nagłówek Accept-Language. Opis np. pod http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html.
Go to the top of the page
+Quote Post
rogrog
post 5.06.2004, 17:08:53
Post #3





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


  1. <?php
  2. echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  3. ?>


--------------------
Go to the top of the page
+Quote Post
mike
post 5.06.2004, 17:30:01
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Jeżeli koniecznie chcesz kraj, to polecam poczytać o tym projekcie : ip to country.
Go to the top of the page
+Quote Post
tiraeth
post 5.06.2004, 18:47:26
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  1. <?php
  2. $Jezyki = array(&#092;"pl\" => \"polski\", \"us\" => \"angielski/amerykański\", \"jp\" => \"japoński\", \"net\" => \"nieznany\"); // I tak dalej
  3.  
  4. $Host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  5.  
  6. $Hoost = explode(&#092;".\", $Host);
  7. $Domenka = count($Hoost)--;
  8. $Jezyk = $Hoost['Domenka'];
  9.  
  10. echo &#092;"Twój jezyk to: <b>\".$Jezyki[$Jezyk].\"</b>\";
  11. ?>


nie wiem czy zadziala... pozdro, tiraeth!
Go to the top of the page
+Quote Post
rogrog
post 5.06.2004, 19:05:36
Post #6





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


Cytat
  1. <?php
  2. $Jezyki = array(&#092;"pl\" => \"polski\", \"us\" => \"angielski/amerykański\", \"jp\" => \"japoński\", \"net\" => \"nieznany\"); // I tak dalej
  3.  
  4. $Host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  5.  
  6. $Hoost = explode(&#092;".\", $Host);
  7. $Domenka = count($Hoost)--;
  8. $Jezyk = $Hoost['Domenka'];
  9.  
  10. echo &#092;"Twój jezyk to: <b>\".$Jezyki[$Jezyk].\"</b>\";
  11. ?>


nie wiem czy zadziala... pozdro, tiraeth!


no tak, a co jak klient ma tylko IP a nie ma domeny??

niezbyt dobre rozwiazanie chyba


--------------------
Go to the top of the page
+Quote Post
gkeb
post 5.06.2004, 21:41:31
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 6.03.2004

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


Dodam jeszcze że klient moze miec domene ogolna a niekonieczne taka ktora okresla kraj.
W numerze 2 (marzec-kwiecien) "php solutions" jest opisany cały projekt IP-to-Country. Polecam lekturze.
Ogolnie polega to na pobraniu IP klienta wchodzacego na strone i porównaniu z baza danych. Plik w formacie CSV z danymi dla takiej bazy danych można pobrac z http://ip-to-country.directi.com
Go to the top of the page
+Quote Post
jono
post 5.06.2004, 22:12:38
Post #8





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

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


Możesz jeszcze tak:

Kod
<script language="Javascript" src="http://map.geoup.com/geoup?template=CountryName"></script>


Ale nie wiem jak to np. zapisać do bazy. Bo ten skrypt potrafi nawet wskazać miasto:

Kod
<script language="Javascript" src="http://map.geoup.com/geoup?template=CityName"></script>


Czy ktoś ma pomysł, jak takie coś zapisać do bazy danych na serwerze?


--------------------
if(function_exists("zrozum_kobiete")){
echo "Niemożliwe!"; exit;}
Go to the top of the page
+Quote Post
hawk
post 6.06.2004, 16:38:04
Post #9





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Do licha, kraj ma się do wersji językowej jak pięśc do nosa.
W sumie autor tematu mógłby określić o co dokładnie mu chodziło...
Go to the top of the page
+Quote Post
mike
post 7.06.2004, 07:45:48
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat
Do licha, kraj ma się do wersji językowej jak pięśc do nosa.
W sumie autor tematu mógłby określić o co dokładnie mu chodziło...

A jak ma się temat topic'u do jego treści .... :?:

Autor pisze w temacie " jak wykryć kraj " a w treści "jak wykryć język ".
Więc nie dziw się , że dostaje dwojakie odpowiedzi.
Pozdrawiam. Mike.
Go to the top of the page
+Quote Post
gkeb
post 7.06.2004, 08:28:13
Post #11





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 6.03.2004

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


Cóż sądze że swoim krótkim postem naprowadziłem autora na własciwą droge, nie napisał że chce gotowca, a przecież nie o to chodzi. A projekt ip-to-country jest jak najlepszym rozwiazaniem tego typu (notabene o innym nie słyszałem)
Go to the top of the page
+Quote Post
mike
post 7.06.2004, 08:31:41
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat
Cóż sądze że swoim krótkim postem naprowadziłem autora na własciwą droge, nie napisał że chce gotowca, a przecież nie o to chodzi. A projekt ip-to-country jest jak najlepszym rozwiazaniem tego typu (notabene o innym nie słyszałem)

Fajnie że go naprowadziłeś na ip-to-country, po tym jak ja go naprowadziłem na to samo ip-to-cpuntry dwa posty przed tobą.
Pozdrawiam. Mike. :wink:

P.S. Też uważam że to najlepszy projekt.
Go to the top of the page
+Quote Post
gkeb
post 7.06.2004, 09:09:33
Post #13





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 6.03.2004

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


Ależ ja nie twierdze że byłem pierwszy :wink: Tylko chodziło mi o to że już został naprowadzony na własciwa scieżke a i tak krąży gdzies i szuka niewiadomo czego.
Go to the top of the page
+Quote Post
mihow
post 7.06.2004, 20:50:02
Post #14





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 15.09.2003
Skąd: Polska / Płock

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


Cytat
  1. <?php
  2. echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  3. ?>


To jest super!
Gdzie mogę się dowiedzieć jakie wartości zwraca?
"pl" już zobaczyłem smile.gif
Ale co jeśli będą to Włochy? "it" ? smile.gif
Go to the top of the page
+Quote Post
rogrog
post 7.06.2004, 21:08:23
Post #15





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


Cytat
Gdzie mogę się dowiedzieć jakie wartości zwraca?



zwraca taką wartość, jaką przesłała przeglądarka

myśle że to jest zgodne z ISO 3166, uwzględnij zarówno kody 2 jak i 3 literowy
http://userpage.chemie.fu-berlin.de/divers...c/ISO_3166.html
szukaj na google tej normy


--------------------
Go to the top of the page
+Quote Post
hawk
post 7.06.2004, 22:12:16
Post #16





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Formalnie HTTP pozwala na do 8 znaków kodujących kraj. RFC 1766 mówi że zawsze mają być używane tylko 2. Apache w jednym chyba przypadku się wyłamuje i daje 3 literki zamiast dwóch.

Co do podanego standardu ISO, nie do końca tak jest. Pojedynczy "element" w nagłówku Accept-Language składa się z 2 części: kod języka i opcjonalnej informacji dodatkowej (np. kod kraju). Dla przykładu:
Kod
Accept-Language: pl, en-us, en-gb

Kody języków opisuje ISO 639. ISO 3166 opisuje kody krajów, a to nie to samo.

Tak więc naprawdę trzeba szukać w ISO 639.
Go to the top of the page
+Quote Post
Coondelboory
post 8.06.2004, 16:32:03
Post #17





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 4.09.2002

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


Cytat
[...]
Jak sprawdzić z jakiego kraju oglądana jest dana strona? Chodzi mi o to, że chcę wyświetlić stronę w odpowiedniej wersji jezykowej...


Sprawdzenie (pewne) jest dosc problematyczne. Sprawdzanie domen udaje sie w ~30% przypadkow, a bazy takie jak ip-to-country lub ip2nation maja niestety dziury.
Ale do wyswietlenia roznych stron w zaleznosci od kraju mozesz uzyc tego:

http://www.syriusz.civ.com.pl/country_switch

wersja mocno beta, ale jest dosc wiarygodna (ma kilka pieter sprawdzania ip). Zakladasz konto, logujesz sie i definiujesz grupy krajow i linki dla nich, a potem gosci do siebie kierujesz przez switch_link. Kazdy dostanie, co dla niego przeznaczone smile.gif .

C.
Go to the top of the page
+Quote Post
rogrog
post 9.06.2004, 20:52:48
Post #18





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


Cytat
ISO 3166 opisuje kody <b>krajów</b>, a to nie to samo.

masz racje nie pomyslalem o tym tongue.gif

no tak, ale tak konkretnie, to ten dokument RFC, który podałeś stwierdza:
Kod
   Language-Tag = Primary-tag *( "-" Subtag )

   Primary-tag = 1*8ALPHA

   Subtag = 1*8ALPHA


czyli nie do 8 znaków biggrin.gif tylko w zasadzie na upartego 17 (8 dla primary, kreska i osiem dla sub



  1. <?php
  2.  
  3. //wycina pierwszy tag z naglowka
  4. $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; 
  5. $lang = substr($lang, 0, strpos('-', $lang));
  6.  
  7. ?>


myślę że i tak nie będziesz robił różnych wersji np. dla brytyjskiego i amerykańskiego angielskiego, więc teraz wystarczy tylko tablica z kodami głównymi odpowiadajacymi odpowiedniemu jezykowi.


--------------------
Go to the top of the page
+Quote Post
hawk
post 9.06.2004, 21:38:22
Post #19





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Cytat
czyli nie do 8 znaków biggrin.gif tylko w zasadzie na upartego 17 (8 dla primary, kreska i osiem dla sub

Of course, 8 na język i 8 dodatkowych. No ale napisałem "8 znaków kodujących kraj" smile.gif.

Cytat
  1. <?php
  2.  
  3. //wycina pierwszy tag z naglowka
  4. $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];  
  5. $lang = substr($lang, 0, strpos('-', $lang));
  6.  
  7. ?>

Hmm, to nie będzie działać.

Po pierwsze, kreski nie musi być, co nawet widać na tym cytacie z RFC. Może być "Accept-Language: pl, en".

Po drugie, tak tylko wycinamy pierwszy z podanych języków. A teoretycznie nic nie każe podawać ich w kolejności malejącego quality. Teoretycznie może być "Accept-Language: pl;q=0.1, en;q=0.9". Chociaż nigdy chyba czegoś takiego nie widziałem...

Anyway, aż się prosi o jakiś uniwersalny kod który parsuje to i robi tablicę preferowanych języków, w odpowiedniej kolejności. Potem tylko sprawdzasz który z tego masz dostępny i zapodajesz odpowiednią stronę.

Swoją, drogą,
Cytat
Applications should always treat language tags as a single token; the division into main tag and subtags is an administrative mechanism, not a navigation aid.
Go to the top of the page
+Quote Post
[fisher]
post 15.06.2004, 00:16:11
Post #20





Grupa: Zarejestrowani
Postów: 151
Pomógł: 0
Dołączył: 4.03.2003

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


Cytat(mihow @ 2004-06-05 16:59:42)
Jak sprawdzić z jakiego kraju oglądana jest dana strona? Chodzi mi o to, że chcę wyświetlić stronę w odpowiedniej wersji jezykowej...

Może uzyj PEAR a dokladniej I18N z pakietu INTERNATIONALIZATION


--------------------
Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn<
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 21:19