我正在使用这个脚本:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
case "nl":
//echo "PAGE FR";
include("talen/nl.php");//include check session FR
break;
case "es":
//echo "PAGE IT";
include("talen/es.php");
break;
case "en":
//echo "PAGE EN";
include("talen/en.php");
break;
default:
//echo "PAGE EN - Setting Default";
include("talen/en.php");//include EN in all other cases of different lang detection
break;
}
但是当我将浏览器语言设置为“af”时,它并没有获得默认的英语语言......
我怎样才能实现这一目标?
编辑:
因为我没有“af”的情况,所以没有显示任何内容......
当没有像“af”这样的情况时,我希望默认为“en”但不起作用
EDIT2:
我现在正在使用它:
<?
$accept_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$accept_lang = str_replace(' ', '', $accept_lang);
$arr = explode(',', $accept_lang);
$lang = "en";
$q = 0;
if (count($arr) > 0) {
foreach ($arr as $a) {
$l = explode(';', $a);
if (count($l) == 1) {
$l[1] = 'q=1';
}
$l[1] = str_replace('q=', '', $l[1]);
if ($l[1] > $q) {
$q = $l[1];
$lang = $l[0];
}
}
}
$lang = preg_replace('/-(.*)/', '', $lang);
switch ($lang){
case "nl":
//echo "PAGE FR";
include("talen/nl.php");//include check session FR
break;
case "es":
//echo "PAGE IT";
include("talen/es.php");
break;
case "en":
//echo "PAGE EN";
include("talen/en.php");
break;
default:
//echo "PAGE EN - Setting Default";
include("talen/en.php");//include EN in all other cases of different lang detection
}
?>
但我的$ lang仍然设置为“af”而不是默认的“en”
编辑3:
感谢您的帮助:
当我尝试使用它时:
print $_SERVER['HTTP_ACCEPT_LANGUAGE'];
switch ($lang){
case "nl":
//echo "PAGE FR";
print("nl");//include check session FR
break;
case "es":
//echo "PAGE IT";
print("es");
break;
case "en":
//echo "PAGE EN";
print("en");
break;
default:
//echo "PAGE EN - Setting Default";
print("en");//include EN in all other cases of different lang detection
break;
}
打印出来:
af,nl; q = 0.8,en; q = 0.5,en-us; q = 0.3en
但我还是“af”..怎么样
只是为了让你知道...我把我的浏览器语言设置为“af”来测试它...只是你知道...但它应该加载你的sript的默认值...
答案 0 :(得分:1)
您应该使用我之前写过的这样的脚本,它会检查具有最佳数量值的语言:
$accept_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$accept_lang = str_replace(' ', '', $accept_lang);
$arr = explode(',', $accept_lang);
$lang = 'en';
$q = 0;
if (count($arr) > 0) {
foreach ($arr as $a) {
$l = explode(';', $a);
if (count($l) == 1) {
$l[1] = 'q=1';
}
$l[1] = str_replace('q=', '', $l[1]);
if ($l[1] > $q) {
$q = $l[1];
$lang = $l[0];
}
}
}
$lang = preg_replace('/-(.*)/', '', $lang);
然后你可以像你一样切换()$lang
。
忽略默认情况下的break;
。
修改强>:
我将$lang = 'de';
更改为$lang = 'en';
。如果HTTP_ACCEPT_LANGUAGE
为空,则这是默认语言。
答案 1 :(得分:-2)
试着想一想。从默认情况下删除 break; 。