【问题标题】:detecting preferred language in IE11 not working在 IE11 中检测首选语言不起作用
【发布时间】:2017-08-08 10:02:09
【问题描述】:

对于一个项目,我必须提供 2 个版本的网页:一个是英语版本,一个是法语版本。因为我在英国,所以浏览器 (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 中?

【问题讨论】:

  • CJ 丹尼斯,感谢您的回答。同时我发现 Chrome 也是如此。但是,仍然可能有一个解决方案,因为目标用户在法国,拥有法语窗口,我可以假设他们的系统将返回 fr-FR 吗?
  • 不一定。法语不是法国唯一使用的语言。对区域语言的支持越来越多。如果我在法国使用自己的计算机,它将设置为en-AU。我可能会也可能不会用法语使用您的网站,这取决于所使用的语言水平(我的法语是中级)。如果您只想用法语(更容易)展示您的网站或检测他们的实际语言偏好,这取决于您。您需要考虑是否有足够的非法语用户来证明以多种语言为网站提供服务。

标签: javascript javascript-objects


【解决方案1】:

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

如果您想手动查看Accept-Language 标头,请按 [F12] 打开开发者工具,然后按 [Ctrl]+[4] 打开网络选项卡,然后发出请求(您可以简单地按 [F5] )。在右侧,您会看到标题面板。在“请求标头”中,您将看到“接受语言”,它应该是您想要的值。不过,我再说一遍,据我所知,没有办法完全从 JavaScript 中获取相同的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多