0

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

我试过搜索谷歌,只有一个检测浏览器语言的功能。这是最好的方法吗?

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

4

2 回答 2

2

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

if (navigator.language == "de") {
    alert("Guten Tag!");
} else {
    alert("Good Morning!");
}
于 2013-08-12T11:03:21.790 回答
1

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

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

所以你会想选择以'en'和'de'开头的语言中评分最高(或排名第一)的语言。

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

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

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

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

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

于 2013-08-12T11:48:49.570 回答