IE11中检测首选语言无法正常工作

5

我需要为一个项目提供两个网页版本:一个英文版和一个法文版。由于我在英国,浏览器(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键后,Windows主屏幕上显示的所有内容都是法语(新闻、天气等),因此选择了法语,但如何在JavaScript中检测它?


CJ Dennis,感谢您的答案。与此同时,我发现Chrome也是如此。但是,仍然可能会有解决方案,因为预期的用户在法国,使用法语Windows系统,我可以假设他们的系统将返回fr-FR? - mljm
不一定。法语并不是法国唯一使用的语言。对于地方语言,有越来越多的支持。如果我在法国使用自己的电脑,它将被设置为 en-AU。我可能能够使用你的网站的法语版本,这取决于所使用的语言水平(我的法语是中级水平)。你可以选择只提供法语版本(更容易),或者检测用户的实际语言偏好。你需要考虑是否有足够的非法语用户来证明提供多种语言的网站是有必要的。 - CJ Dennis
1个回答

2

Internet Explorer会遵守Windows中设置的语言偏好,但是似乎没有办法从JavaScript中访问这些信息。你能做的最好的事情就是在服务器上检测语言,并将信息返回给你的脚本。

如果您想手动查看Accept-Language头,请按[F12]打开开发人员工具,然后按[Ctrl]+[4]打开网络选项卡,进行请求(您可以简单地按[F5])。在右侧,您将看到一个标题面板。在“请求标头”中,您将看到“Accept-Language”,这应该是您想要的值。不过,据我所知,纯粹从JavaScript中获取相同的信息是不可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接