使用PHP检测Web浏览器语言

ler*_*ler 3 php

我发现对于每种语言,此代码会有不同的响应,具体取决于许多因素。

$lang = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $lang;  
Run Code Online (Sandbox Code Playgroud)

例如英语:en_EN,en-EN,en_GB,en_US,en-GB,en-US。法语和其他语言也一样。我正在寻找的是在哪里可以找到那些lang同义词,因此我可以为每个语言提供正确的页面语言。
现在我有3种语言,所以我要寻找的是找到英语,法语和阿拉伯语的所有可能性,例如:

if (($lang=="en_EN") OR ($lang=="en-EN") OR ($lang=="en_GB") OR ($lang=="en_US") OR ($lang=="en-GB") OR ($lang=="en-US"))  {
    echo 'show English version';
}else if (($lang=="fr_FR")  ...... )  { // i don't know the other like fr-FR .....
    echo 'show French version';
}else if (($lang=="ar_AR")  ...... )  { // i don't know the other like ar-AR .....
    echo 'show Arabic version';
}else {
    echo 'English as default';
}
Run Code Online (Sandbox Code Playgroud)

fub*_*bar 5

根据您的示例,您似乎与语言的本地化无关(例如,是英式英语还是美式英语)。而是您只担心语言首选项是英语。

既然如此,我建议仅从语言环境中获取前两个字符。

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Run Code Online (Sandbox Code Playgroud)

这将返回enfrar,等,无论定位。使用此设置设置返回给用户的内容语言,如果不存在该语言,则使用默认语言(例如英语)。