Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykrywanie języka uzytkownika/przeglądarki
Forum PHP.pl > Forum > PHP
Dynuel
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
strife
  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...
Dynuel
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
strife
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!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.