bon*_*nny 1 html php arrays string http-headers
可能重复:
HTTP_ACCEPT_LANGUAGE
我尝试编写语言选项工具。为此我用
$default_language = (strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
if (eregi('af', $default_language)) {do something}
Run Code Online (Sandbox Code Playgroud)
现在我想在回显时订购字符串:
$_SERVER["HTTP_ACCEPT_LANGUAGE"]
Run Code Online (Sandbox Code Playgroud)
例如,用户指定了多种语言。
带有不同语言的Chrome示例:
nl,en-gb;q=0.8,en;q=0.6,fr;q=0.4,fr-ca;q=0.2
Run Code Online (Sandbox Code Playgroud)
因此,我如何读出字符串以一定的顺序显示它,nl这是我首选的第一语言。
该代码应类似于:
if ('nl'== array[0]) {do something}
Run Code Online (Sandbox Code Playgroud)
因此,如果有人可以帮助我,我将不胜感激。
非常感谢。
可以给每个语言范围一个相关的质量值,该质量值表示用户对该范围指定的语言的偏好估计。质量值默认为“ q = 1”。
您必须遍历各种语言,然后选择一种质量最高(优先)的语言;像这样:
$preferred = "en"; // default
if(isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
{
$max = 0.0;
$langs = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
foreach($langs as $lang)
{
$lang = explode(';', $lang);
$q = (isset($lang[1])) ? ((float) $lang[1]) : 1.0;
if ($q > $max)
{
$max = $q;
$preferred = $lang[0];
}
}
$preferred = trim($preferred);
}
// now $preferred is user's preferred language
Run Code Online (Sandbox Code Playgroud)
如果Accept-Language未发送标头,则所有语言均可接受。