2012-12-20 61 views
-1

我想讓我的網站使用多種語言。如何通過FIRST檢測瀏覽器的語言簡單地包含正確的語言文件,如果用戶單擊每個頁面上存在的語言標記,則可以通過設置cookie來包含正確的語言文件。使用瀏覽器的語言檢測和Cookie的多語言PHP網站

我發現這個腳本:

<script> 

/* 
Browser Language Redirect script- By JavaScript Kit 
For this and over 400+ free scripts, visit http://www.javascriptkit.com 
This notice must stay intact 
*/ 

//Enter ISO 639-2 letter Language codes to detect (see: http://www.w3.org/WAI/ER/IG/ert/iso639.htm): 
var langcodes=new Array("en", "de", "it", "default") 

//Enter corresponding redirect URLs (last one is for default URL): 
var langredirects=new Array("english/index.php", "deutsch/index.php", "italiano/index.php", "english/index.php") 

var languageinfo=navigator.language? navigator.language : navigator.userLanguage 
var gotodefault=1 

function redirectpage(dest){ 
if (window.location.replace) 
window.location.replace(dest) 
else 
window.location=dest 
} 

for (i=0;i<langcodes.length-1;i++){ 
if (languageinfo.substr(0,2)==langcodes[i]){ 
redirectpage(langredirects[i]) 
gotodefault=0 
break 
} 
} 

if (gotodefault) 
redirectpage(langredirects[langcodes.length-1]) 


</script> 
+0

不能檢測用戶的瀏覽器語言。這是在互聯網上你有一些隱私與少數事情之一。 – poepje

+0

真的嗎?我的意思是在設置中設置瀏覽器的語言。 – user1915410

+0

我明白,但你不能。您可能想要做的是,通過IP地址檢測國家/地區,或讓訪問者(可選)自行選擇所需的語言。 – poepje

回答

0

你想要什麼看看這個讓你:

if (!isset($_SESSION['locale'])){ 
    // See if the client headers tell us what language they want. If not, 
    // default to U.S. English. 
    if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ 
     $lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); 
     $pattern = '/^(?P<primarytag>[a-zA-Z]{2,8})'.'(?:-(?P<subtag>[a-zA-Z]{2,8}))?(?:(?:;q=)'.'(?P<quantifier>\d\.\d))?$/'; 
     $splits = array(); 

     if (preg_match($pattern, $lang[0], $splits)) { 
      if (isset($splits[1]) && isset($splits[2])){ 
       $_SESSION['locale'] = "$splits[1]_$splits[2]"; 
      }else{ 
       $_SESSION['locale'] = 'en_US'; 
      } 
     } else { 
      $_SESSION['locale'] = 'en_US'; 
     } 
    }else{ 
     $_SESSION['locale'] = 'en_US'; 
    } 
}