私はこのスクリプトを使用しています:
$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」にしたいのですが、うまくいきません
編集2:
私は今これを使用しています:
<?
$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 はまだデフォルトの「en」ではなく「af」に設定されています
編集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でデフォルトをロードする必要があります...