我发现对于每种语言,此代码会有不同的响应,具体取决于许多因素。
$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)
根据您的示例,您似乎与语言的本地化无关(例如,是英式英语还是美式英语)。而是您只担心语言首选项是英语。
既然如此,我建议仅从语言环境中获取前两个字符。
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Run Code Online (Sandbox Code Playgroud)
这将返回en,fr,ar,等,无论定位。使用此设置设置返回给用户的内容语言,如果不存在该语言,则使用默认语言(例如英语)。