Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wykrywanie języka uzytkownika/przeglądarki, macie jakieś pomysly jak to zrobić
Dynuel
post 18.06.2005, 13:42:23
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


witam

robię rozne wersje jezykowe na stronie i chcialbym aby skrypt automatycznie wykrywał i ustawiał dany język. czy istnieje możliwość wykrycia domyślnego języka przegladarki/uzytkownika/systemu nie mam pojęcia czego, bynajmniej aby to byl język osoby która przegląda serwis.

szukałem tutaj na forum jak to rozwiązać, lecz niczego nie znalazlem, poza wzmianką o "serwer WWW ma na podstawie nagłówków wysłanych przez przeglądarkę klienta ustalić, którą wersję językową pliku ma mu zapodać (manual do apache'a jest zrobiony w taki właśnie sposóB)" lecz ja bym chciał zrobić to jakoś skryptowo, abym tłumaczenie mógł ładować np. z bazy danych lub pliku.

wielkie dzięki, pozdrawiam


--------------------
Go to the top of the page
+Quote Post
strife
post 18.06.2005, 13:58:33
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


  1. <?php
  2.  
  3. $jezyk = $_SERVER['HTTP_USER_AGENT'];
  4.  
  5. //... sprawdzasz np. przez ereg czy wystepuje w tym stringu pl, en, de itd..
  6.  
  7. ?>


Albo może przez $_SERVER['HTTP_ACCEPT_LANGUAGE'] chociaż dokładnie nie wiem jak określić język jaki ma przegladarka...

Ten post edytował scarface 18.06.2005, 14:03:49


--------------------
Go to the top of the page
+Quote Post
Dynuel
post 18.06.2005, 14:18:31
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


dobra, sprawdzalem obie mozliwosci
  1. <?php
  2. echo $_SERVER['HTTP_USER_AGENT'];
  3. ?>

zwraca
Cytat
[pod firefoxem]  Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
[pod ie]  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

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

zwraca
Cytat
[pod firefoxem]  pl,en-us;q=0.7,en;q=0.3
[pod ie]  pl

tak więc który polecacie uzywac?? i czym one sie właściwie różniąquestionmark.gif
znaczy sie z tego co mi sie wydaje i widać, to tylko trugi przyklad zwraca potrzebne mi dane czyli "pl"
a i jeszcze jedno pytanie, w wyniku szukać skrotu języka ktory posiadam juz w bazie i jezeli ktorys w nich wystepuje to dopiero ustawiac czy tez odwrotnie, jakos pobrac(tylko jak) jezyk i dopiero potem ustawic tlumaczenie, ewentualnie jezeli nie wystepuje to domyslne.

kolejny raz wielkie dzięki


--------------------
Go to the top of the page
+Quote Post
strife
post 18.06.2005, 14:32:45
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Znalazłem to:
  1. <?php
  2.  
  3. function orderedLanguages()
  4. {
  5.  $languages = split(&#092;",\", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
  6.  $lang_q = Array();
  7.  foreach( $languages as $aLang ) {
  8.  $lang_array = split(&#092;";q=\", trim( $aLang ) );
  9.  $lang = trim( $lang_array[0] );
  10.  if( !isset( $lang_array[1] ) )
  11.  $q = 1;
  12.  else
  13.  $q = trim($lang_array[1]);
  14.  $lang_q[&#092;"$lang\"] = (float)$q;
  15.  }
  16.  arsort($lang_q);
  17.  //extra code for making the languages key indexed
  18.  $i = 0;
  19.  $lang_index = Array();
  20.  foreach($lang_q as $lang => $q) {
  21.  // $lang_q[$i] = $lang; //add to the same array the index key/language
  22.  $lang_index[$i] = $lang; //add to a new array the index key/language
  23.  $i++;
  24.  }
  25.  
  26.  //return $lang_index; // uncomment for returning array with keys={0..n-1}, values={most..least preferred}
  27.  return $lang_q;
  28. }
  29.  
  30. ?>


źródło: pl.php.net/manual/pl

Możesz do tego dodać coś takiego:
  1. <?php
  2.  
  3. $z = orderedLanguages();
  4.  
  5. foreach($z as $k => $c)
  6. {
  7. if($c == 1)
  8. {
  9. $jezyk = $k;
  10. }
  11. }
  12. echo 'Teraz jest jezyk ' . $jezyk;
  13.  
  14. // ... a potem wczytywanie pliku przez np. switch
  15.  
  16. switch($jezyk)
  17. {
  18. case pl: require_once('polish.php'); break;
  19. case en: require_once('english.php'); break;
  20. default: require_once('polish.php'); break; // jezyk domyslny
  21. }
  22.  
  23. ?>


Zakładając oczywiście że pliki językowe masz w pliku... możesz to sobie przerobić aby wczytywało jakieś rekordy w bazie etc.

pozdro!


--------------------
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: 6.05.2025 - 08:30