ugrás a tartalomhoz

Országfelismerő script

Don Oden · 2007. Jan. 27. (Szo), 19.10
Üdv!
A jelenlegi problémám a következő: Ugyebár a honlapot amit csinálok, két nyelvűre szeretném, és a terv az hogy ha magyarországról jön látogató egyszerre a magyar tartalomra ugrik át, ha külföldről jön a látogatás akkor pedíg az angol tartalomra ugrik. Erre készítettem is egy scriptet de valahogy nem úgy működik mint ahogy én azt elképzeltem. Átléni átlép a hu mappába de az en szóval angol mappára sehogy nem akar. (Ezt külföldi ismerőssel teszteltük)
  1. <?php  
  2. $lang = $temp[count($temp)-1];  
  3. $orszagok = array('hu''en');  
  4. if(IsSet($_GET['orszag']) && In_array($_GET['orszag'], $orszagok)) {  
  5.     $lang = $_GET['orszag'];  
  6.     $_SESSION['orszag'] = $_GET['orszag'];  
  7.     }  
  8. elseif(IsSet($_SESSION['orszag']) && In_array($_SESSION['orszag'], $orszagok)) {  
  9.     $lang = $_SESSION['orszag'];  
  10.     }  
  11. else {  
  12.     $lang = 'en';  
  13.     }  
  14. if($orszagok == 'en') {  
  15.     echo "<script language=\"JavaScript\">document.location.href = \"http://hu.hu/en\";</script>";  
  16. }  
  17. elseif($orszagok == 'hu') {  
  18.     echo "<script language=\"JavaScript\">document.location.href = \"http://hu.hu/hu\";</script>";  
  19. }  
  20. else {  
  21.     echo "<script language=\"JavaScript\">document.location.href = \"http://hu.hu/hu\";</script>";  
  22. } ?>  
Én is töröm majd a fejem, de azért egy kis szikrát tehetnétek a fejembe.
Kösz bye
 
1

Autómata nyelvváltás

Max Logan · 2007. Jan. 27. (Szo), 19.24
Én a céges honlapnál találkoztam a problémával. Nemtom, hogy neked mire van szükséged. Az én megoldásom akkor jó, ha nem a lokalitás szerint szeretnéd a nyelvet váltani. Tehát nem az a fontos, hogy éppen, hol van a világban a user, hanem, hogy milyen nyelvű. Az egész script azon alapszik, hogy feltételezzük, hogy egy magyar user-nek magyar az elsődleges nyelve a böngészőjében, egy angol-nak angol, egy németnek német és így tovább.
  1. <?php  
  2.   
  3.  $referer = $_SERVER["HTTP_REFERER"];  
  4.   
  5.  # Ha nyelválasztás történt a honlapon  
  6.  switch ( $_GET["change_lang"] )    
  7.  {  
  8.     case "magyar" :  
  9.     {  
  10.       setcookie("site_lang""magyar"mktime(0,0,0,1,1,2010));  
  11.       header("Location: $referer");  
  12.     }  
  13.     break;  
  14.   
  15.     case "szlovak" :  
  16.     {  
  17.       setcookie("site_lang""slovak"mktime(0,0,0,1,1,2010));  
  18.       header("Location: $referer");  
  19.     }  
  20.     break;  
  21.   
  22.     case "cseh" :  
  23.     {  
  24.       setcookie("site_lang""czeh"mktime(0,0,0,1,1,2010));  
  25.       header("Location: $referer");  
  26.     }  
  27.     break;  
  28.  }  
  29.   
  30.  # Ha még nincsen nyelv COOKIE beállítva, akkor létrehozzuk a böngésző elsődleges nyelve alapján  
  31.  if ( !$_COOKIE["site_lang"] )   
  32.  {  
  33.     # Kinyerjük a böngészőben beállított elsődleges nyelvet  
  34.     $lang_id = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);  
  35.   
  36.     # A böngésző elsődleges nyelve alapján COOKIE létrehozása és az oldal nyelvének beállítása  
  37.     switch ( $lang_id )  
  38.     {  
  39.       case "sk" :   
  40.       {   
  41.          setcookie("site_lang""slovak"mktime(0,0,0,1,1,2010));  
  42.          $site_lang = "slovak";   
  43.       }  
  44.       break;  
  45.   
  46.       case "cs" :  
  47.       {  
  48.          setcookie("site_lang""czeh"mktime(0,0,0,1,1,2010));  
  49.          $site_lang = "czeh";  
  50.       }  
  51.       break;  
  52.        
  53.       default :  
  54.       {  
  55.          setcookie("site_lang""magyar"mktime(0,0,0,1,1,2010));  
  56.          $site_lang = "magyar";  
  57.       }  
  58.       break;  
  59.     }  
  60.  }  
  61.  else  
  62.  {  
  63.    $site_lang = $_COOKIE["site_lang"];  
  64.  }  
  65.   
  66. ?>  
A megoldás lényege, hogy első látogatás alkalmával egy cookie-t hozunk létre ami tárolja a nyelvet. Ha a honlapon elhelyezett nyelvváltást használja a user, akkor a cookie értékét megváltoztatjuk és a REFERER-t felhasználva ugyanaz az oldal fog visszatöltődni, mint ahol a nyelvet változtatta.

A megoldás előnye, hogy kikapcsolt JS mellett is működik, valamint bárhol is váltson nyelvet a kedves látogató nem kell az oldal elejéről kezdenie a navigálást.
2

off

Szekeres Gergő · 2007. Jan. 28. (V), 22.01
kicsit off, de van valami módszer arra, hogy lekédezzük a felhasználó oprendszerének nyelvét, vagy esetleg a karakterkészletét?
3

nem az oprendszer számít

Táskai Zsolt · 2007. Jan. 29. (H), 10.11
...hanem az, hogy mit adott meg a felhasználó böngészőben, hogy milyen nyelv(ek)en szeretne olvasni (ez persze alapesetben azonos az oprendszer 'lokáljával', de nem a nyelvével). erre való a fent említett HTTP_ACCEPT_LANGUAGE, és hasonlóképp létezik HTTP_ACCEPT_CHARSET.