我正在使用chrome并尝试检测当前使用的语言。
window.navigator.language返回一种语言
window.navigator.languages返回chrome中添加的所有语言
在互联网上贴满了我被告知window.navigator.language负责找到 Active 语言。 但事实并非如此。它只返回列表中的第一个,即en-US,但是你可以看到它不能保证是主动语言,我怀疑是因为新的设计。我想知道是否有人找到了更现代的镀铬解决方案。
也就是说,根据我的偏好,我没有得到任何有关语言的信息。
注意:我还向我的服务器发送了一个请求并检查了标题,同样的信息如上所示。
accept-language: en-AU,en-GB;q=0.9,en-US;q=0.8,en;q=0.7,es-ES;q=0.6,es;q=0.5
只是反映了首选语言的显示顺序,这并不能告诉我哪些是主动语言,哪些不是。
如果活动的浏览器语言是en-GB或es-ES,则相同的标题信息具有相同的权重并不重要。
答案 0 :(得分:0)
如果您希望语言位于第一个位置,则可以使用此代码:
var browserLanguage = navigator.language || navigator.userLanguage;
如果您想要显示的语言,那就是另一个故事:
javascript可以看到的是HttpRequest标头。 例如:
您可以看到一个字段Accept-Language,它告诉服务器您想要查看哪些语言。 RFC 7231 5.3.1.
请注意,某些收件人会处理语言标记的顺序 列为优先级递减的指示,特别是对于标签 被赋予相同质量值(没有值与q = 1相同)。 但是,不能依赖此行为。为了一致性和 最大化互操作性,许多用户代理分配每个语言标记 一个独特的质量价值,同时也按顺序列出它们 质量。可以对语言优先级列表进行额外讨论 见[RFC4647]第2.3节。
这意味着浏览器会为每个标签添加权重,然后对它们进行排序递减(没有q是q = 1所以最大值)。
因此,您无法看到显示的语言,这是正常的,因为这些是您的个人浏览器设置。移动设备上的应用可以访问浏览器设置,但常规网站无法访问。