检测IE11中的首选语言不起作用

时间:2017-08-08 10:02:09

标签: javascript javascript-objects

对于一个项目,我必须提供两个版本的网页:一个英文和一个法文。因为我在英国,浏览器(IE11)自然地以本地语言(en-GB)安装。为了测试法语,我去了

     Internet-Options->Languages->Set Language Preference->Add a Language (French-France) 
(or select the language if already there)

并确保法语位于顶部。 我有一个JSF页面,其中使用Java检测语言,并且工作正常,所有文本都取自法语属性文件,而不是英语属性文件,在更改英语和法语之间的语言时自动切换。 但是,对于一个网页,我需要在JavaScript中检测当前语言,无论我尝试什么,它仍然是en-GB。

我试过这段代码:

var language = navigator.languages && navigator.languages[0] ||
           navigator.language ||
           navigator.userLanguage;

返回'en-GB'。 在F12调试器中独立尝试:

navigator.languages returns: undefined
navigator.userLanguage: en-GB
navigator.language: undefined
navigator.browserLanguage: en-US

这是IE11版本11.0.9600.17031

我也在Windows 8中,windows-home屏幕(意外按下windows键......)也显示了法语(新闻,天气等)的所有内容,因此选择了法语,但如何检测它在JavaScript?

1 个答案:

答案 0 :(得分:2)

Internet Explorer确实尊重Windows中设置的语言首选项,但显然无法从JavaScript访问此信息。您可以做的最好的事情是检测服务器上的语言,并将信息返回到您的脚本。

如果要手动查看Accept-Language标题,请按[F12]打开开发人员工具,然后按[Ctrl] + [4]选择网络标签,并提出请求(您只需按[ F5])。在右侧,您将看到标题的面板。在“请求标题”中,您将看到“Accept-Language”,它应该是您想要的值。我再说一遍,据我所知,没有办法纯粹从JavaScript中获取相同的信息。