如何使用JavaScript获取浏览器语言

203

可能是重复问题:
JavaScript检测浏览器语言偏好

我想检测进入我的网站的浏览器语言,如果是英语或法语,那么我可以重定向到英语页面或其他页面。

另外,我能检测移动设备的语言吗?


6
最好使用HTTP头像 HTTP_ACCEPT_LANGUAGE 来完成这个任务。 - Robert
看看这个类似的问题/答案。StackOverflow - JavaScript检测浏览器语言偏好 - sicks
2个回答

472

尝试使用此脚本获取您的浏览器语言

<script type="text/javascript">
var userLang = navigator.language || navigator.userLanguage; 
alert ("The language is: " + userLang);
</script>


8
等效且更具JS特色的写法是:navigator.language || navigator.userLanguage - Eamon Nerbonne
15
我的测试表明,尽管在IE和Firefox中可以正常工作,但在Chrome中无法正常工作。 Chrome的navigator.language始终是Windows安装的语言配置,而不是浏览器的语言配置。 - kybernetikos
3
+1@kybernetikos,这是需要解决的问题,因为大多数人都使用Chrome浏览器。 - boburShox
6
如果您想使用一个库,您可以使用acceptedlanguages.js,它完全使用JavaScript编写,并且与浏览器兼容,覆盖所有情况:https://github.com/leighmcculloch/acceptedlanguages.js - Leigh McCulloch
11
更新:现在(2020年),所有现代浏览器都支持一个实验性功能,可以返回语言偏好数组:navigator.languages //["en-US", "zh-CN", "ja-JP"] 在2020年,这应该能够在至少95%的浏览器上正常工作。 - Cornelius Roemer
显示剩余7条评论

55

“JavaScript” 方式:

var lang = navigator.language || navigator.userLanguage; //no ?s necessary

实际上,你应该在服务器上进行语言检测,但如果绝对必要且需要通过JavaScript知道/使用,也可以得到它。


24
为什么应该在服务器上完成?这似乎是一个多余的评论。 - Paul
3
@保罗,语言识别应该在服务器上完成,以便将内容用适当的语言提供。否则会浪费用户的带宽。 - zzzzBov
5
我一直在开发一个支持多语言的Ember.js应用程序,在我的API调用中使用navigator.language,以避免浪费用户带宽。但我猜你是对的。这只是一个边缘案例。 - Paul
37
这个答案很早之前就发布了,但是现在SPA在静态无服务器环境下的工作效果非常好,因此用JavaScript实现这个功能完全合理。 - Wanny Miarelli

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