2017-08-08 90 views
5

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

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

并确保法语在顶部。 我有一个使用Java检测语言的JSF页面,工作正常,所有文本都取自法文属性文件,而不是英文属性文件,在英语和法语之间更改语言时会自动切换。 但是,对于一个网页,我需要在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的主屏幕(上的Windows键后意外按下...)也显示法语(新闻,天气等)的一切,所以选择法语,但如何在JavaScript中检测它?

+0

CJ Dennis,谢谢你的回答。同时我发现Chrome也是如此。但是,仍然可能会有解决方案,因为法国的用户是法国人,我可以假设他们的系统将返回fr-FR吗? – mljm

+0

不一定。法国不是法国唯一使用的语言。对地区语言的支持越来越多。如果我在法国使用自己的电脑,它将被设置为“en-AU”。我可能会也可能不会使用法语网站,具体取决于所用语言的级别(我的法语是中级)。如果您只想用法语(简单)展示您的网站或检测他们的实际语言偏好,这取决于您。您需要考虑是否有足够的非法语用户来证明以多种语言提供服务的理由。 –

回答

2

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

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