【问题标题】:How to detect client´s computer language / or what ever in order to change language in my web site automatically [duplicate]如何检测客户的计算机语言/或为了自动更改我网站中的语言[重复]
【发布时间】:2013-08-12 10:59:53
【问题描述】:

有没有办法检测客户的计算机语言? 我用两种语言开发了我的网站:英语和德语。如果德国人打开我的网站,它应该打开德语版本,否则它将打开任何其他原产国的英文版本。

我已经尝试搜索 Google,但只有一个检测浏览器语言功能。这是最好的方法吗?

附言。我不是在这里要求您的代码,只是关于如何完成此操作的建议,但如果你们想向我展示真实的示例,我们将不胜感激!

【问题讨论】:

标签: javascript


【解决方案1】:

在最近的浏览器中,navigator.language 是你想要的:

if (navigator.language == "de") {
    alert("Guten Tag!");
} else {
    alert("Good Morning!");
}

【讨论】:

  • 我已经把它放在我的网站上测试了。为什么它总是提示“早上好!”?
  • 附言。我已经用 safari、Chrome 和 fire fox 对其进行了测试......只有 chrome 可以正常工作!
  • 抱歉,我不能在 OPERA 中使用 CMD-K ..
【解决方案2】:

使用Accept-Language 标头。这是用户通过在浏览器选项中设置明确请求的语言(否则默认为浏览器的安装语言)。标头可以包含多种语言的评级,例如:

fr,ja,de-AT;q=0.8,de;q=0.6

因此,您可能希望选择以“en”和“de”开头的语言中评分最高(或排名第一)的语言。

不幸的是,Accept-Language 标头不容易被 JavaScript 访问。

在最新版本的 Firefox 中,navigator.language 将为您提供该列表中评分最高的语言。不幸的是,如果用户按照“法语、德语”的顺序请求语言,这对您没有帮助,因为您只会看到fr

在其他浏览器中,它会为您提供浏览器安装语言,这是一个合理的猜测,但不如用户实际要求的语言。在 IE 上 browserLanguage 是一样的,还有 userLanguagesystemLanguage 与 Windows 语言环境有关,这通常是一个更糟糕的猜测。

因此,如果您想要“英语和德语中评分最高的用户配置语言”,最好的办法是在服务器端读取并解析 Accept-Language 标头,然后将该语言以字符串形式返回给 JS代码。 http_negotiate_language 是一个 PHP 函数,可以帮助您正确解析标题(来自 $_SERVER['HTTP_ACCEPT_LANGUAGE'])。

无论你做什么,都要提供一种手动切换语言的方法,因为即使是最好的猜测也可能是错误的。

【讨论】:

  • 我现在明白了...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2018-07-29
  • 2017-07-23
  • 1970-01-01
  • 2018-06-24
  • 2017-01-31
相关资源
最近更新 更多