1

我有一个多语言网站。使用 htaccess

 # Another Languages
 #RewriteCond %{HTTP:Accept-Language} ^en [NC]
 #RewriteRule ^$ /en [R=301,L]

 # German
 #RewriteCond %{HTTP:Accept-Language} ^de [NC]
 #RewriteRule ^$ /de [R=301,L]

问题:

我使用最新的 chrome 浏览器的德文版。默认情况下,它会发送以下语言标头:

Chrome /de = string(71) "en-US,en;q=0.8,id;q=0.6,ms;q=0.4,fr;q=0.2,de;q=0.2,es;q=0.2,de-AT;q=0.2"
Chrome /en = string(71) "en-US,en;q=0.8,id;q=0.6,ms;q=0.4,fr;q=0.2,de;q=0.2,es;q=0.2,de-AT;q=0.2"

但在 Firefox 和 IE 中:

Firefox /de = string(53) "de,en;q=0.8,en-US;q=0.7,es;q=0.5,fr;q=0.3,de-AT;q=0.2" 
Firefox /en = string(53) "en,en-US;q=0.8,de;q=0.7,es;q=0.5,fr;q=0.3,de-AT;q=0.2" 

IE /de = string(74) "de,en-GB;q=0.9,de-AT;q=0.7,de-DE;q=0.6,de-LI;q=0.4,de-LU;q=0.3,de-CH;q=0.1"  
IE /en = string(74) "en-GB,de;q=0.9,de-AT;q=0.7,de-DE;q=0.6,de-LI;q=0.4,de-LU;q=0.3,de-CH;q=0.1" 

如您所见,英语的优先级高于德语。所以有人也有这个问题吗?

4

2 回答 2

1

尝试在 Chrome 中转到“首选项”、“语言和输入设置”,然后将德语添加为浏览器语言之一。

不同的浏览器使用不同的算法来检测用户的首选语言,然后用它们填充 Accept-Language 标头。

例如,您的计算机可能安装了英语和德语语言环境,但用户倾向于使用 Chrome 的英文界面,并且访问的网站大多为英语 - Chrome 可能会优先考虑英语,即使用户是德国人或计算机在德国。

没有 100% 准确的检测用户语言的方法,但可以假设如果 Accept-Language 标题将英语列为顶级语言之一 - 该用户确实知道该语言的水平足以在以后切换语言. 简而言之,Chrome 有理由相信您了解 en-US。

于 2015-03-17T04:30:51.123 回答
0

在 Chrome 中,尽管点击了“以这种语言显示 Google Chrome”,但还需要将德语重新排序到命令的顶部,因此 Http:Accept-Language 将重定向到 /de

于 2015-03-17T06:46:13.777 回答