如何检测客户端´s的计算机语言/或其他什么,以便自动更改网站中的语言
How to detect client´s computer language / or what ever in order to change language in my web site automatically
有什么方法可以检测客户端的计算机语言吗?我已经用两种语言开发了我的网站:英语和德语。如果德国人打开我的网站,它应该打开德语版本,否则它将为任何其他原籍国打开英语版本。
我试过在谷歌上搜索,但只有一个检测浏览器语言的功能。这是最好的方法吗?
Ps。我不是在这里询问你的代码,只是关于如何实现这一点的建议,但如果你们想向我展示真实的例子,我们将不胜感激!
在最近的浏览器中,navigator.language
就是您想要的:
if (navigator.language == "de") {
alert("Guten Tag!");
} else {
alert("Good Morning!");
}
使用Accept-Language
标头。这是用户通过在浏览器选项中设置明确要求的语言(否则默认为浏览器的安装语言)。标题可以包含多种具有评级的语言,例如:
fr,ja,de-AT;q=0.8,de;q=0.6
因此,您需要选择以"en"answers"de"开头的语言中评分最高的(或并列第一的)。
不幸的是,Accept-Language
标头不容易被JavaScript访问。
在最新版本的Firefox中,navigator.language
将为您提供该列表中评分最高的语言。不幸的是,如果用户按照"法语、德语"的顺序请求语言,这对您没有帮助,因为您只会看到fr
。
在其他浏览器中,它会为您提供浏览器安装语言,这是一个合理的猜测,但不如用户实际要求的语言好。在IE上,browserLanguage
也是一样的,还有与Windows区域设置相关的userLanguage
和systemLanguage
,这通常是一个更糟糕的猜测。
因此,如果您想要"除英语和德语之外的最高评分的用户配置语言",最好的方法是在服务器端读取并解析Accept-Language
标头,然后将该语言以字符串形式返回到JS代码。http_negotiate_language
是一个PHP函数,它将帮助您正确解析(来自$_SERVER['HTTP_ACCEPT_LANGUAGE']
的)标头。
无论你做什么,都要提供一种手动切换语言的方法,因为即使是最好的猜测也可能是错误的。
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 什么's导致了512字节的限制-openkeyval或其他什么
- 杜兰达尔默认路线有效,其他什么都没有
- javascript或缓存错误?或者其他什么
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 如果React.js是V,那么在MVC中,其他字母是什么
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- 如何上传文件不使用多部分编码?(可能使用八位字节或其他什么)
- @internal react 代码中的 JavaScript 文档标签,是 jsdoc、闭包还是其他什么
- 如何匹配其他一切,但不管它是什么's与regex匹配
- Javascript 我应该使用什么其他技巧来代替导出符号
- javascript:将浮点数四舍五入到最接近的 .25(或其他什么..)
- 在我的测试脚本中,我运行了 if 语句,但我从未运行过其他语句?我做错了什么
- 什么是原型?构造函数或其他对象
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- Request.text()(以及从 Body 实现的其他函数)实际上做了什么
- Javascript:当Javascript在IE中工作而在Firefox或其他浏览器中不工作时,有什么不同的条件
- 即时角度服务-我还有什么其他方式可以重写它
- 如何检测客户端´s的计算机语言/或其他什么,以便自动更改网站中的语言
- 在JavaScript中,换行符实际上并不是在创建新行,有没有其他选择,或者我做错了什么