2010-02-27 62 views
1

我改变使用PHP阵列,这使得语言的网址是这样的:PHP浏览器重定向语言不起作用!

http://alexchen.zxq.net/index.php?lang=es 

我在默认的部分我的“控制器”文件添加$lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];,我选择的首选语言的选择另一种语言(Mozilla Firefox浏览器) , 但它没有奏效。

的common.php:

<?php 
session_start(); 
header('Cache-control: private'); // IE 6 FIX 

if(isSet($_GET['lang'])) { 
$lang = $_GET['lang']; 

// register the session and set the cookie 
$_SESSION['lang'] = $lang; 

setcookie("lang", $lang, time() + (3600 * 24 * 30)); 
} 
else if(isSet($_SESSION['lang'])) { 
$lang = $_SESSION['lang']; 
} 
else if(isSet($_COOKIE['lang'])) { 
$lang = $_COOKIE['lang']; 
} 
else { 
//$lang = 'en'; <-this was previous code 
     //I tried this: 
     $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; 
} 

// use appropiate lang.xx.php file according to the value of the $lang 
switch ($lang) { 
case 'en': 
$lang_file = 'lang.en.php'; 
break; 

case 'es': 
$lang_file = 'lang.es.php'; 
break; 

case 'tw': 
$lang_file = 'lang.tw.php'; 
break; 

case 'cn': 
$lang_file = 'lang.cn.php'; 
break; 

default: 
//$lang_file = 'lang.en.php'; <-this was before 
     //I also tried this: 
     $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE']; 
} 

//translation helper function 
function l($translation) { 
global $lang; 
return $lang[$translation]; 
} 

include_once 'languages/'.$lang_file; 
?> 

有什么建议?

回答

2

$_SERVER['HTTP_ACCEPT_LANGUAGE']比双字母ISO代码更复杂。查看this question以获得有关如何在PHP中解析HTTP_ACCEPT_LANGUAGE的很好答案。