jQuery浏览器语言检测
场景 我需要创建一个页面(仅客户端),检测浏览器使用的语言,显示与该语言相关的适当类元素,并隐藏其他元素 英语将是默认语言,因此如果数组中没有匹配的单元格,则将显示该语言 我正在使用jQuery浏览器语言检测,jquery,Jquery,场景 我需要创建一个页面(仅客户端),检测浏览器使用的语言,显示与该语言相关的适当类元素,并隐藏其他元素 英语将是默认语言,因此如果数组中没有匹配的单元格,则将显示该语言 我正在使用navigator.language和navigator.userLanguage(IE)值来检测浏览器当前使用的语言 我目前有一些正在进行的代码,但我不确定最好的方法是合并所有潜在的可能性,然后使用数组选择它们 还有可能不止一种语言与一个国家挂钩。比如说英语有en-us,en-uk等。。我该怎么把它绑起来 代码 H
navigator.language
和navigator.userLanguage
(IE)值来检测浏览器当前使用的语言
我目前有一些正在进行的代码,但我不确定最好的方法是合并所有潜在的可能性,然后使用数组选择它们
还有可能不止一种语言与一个国家挂钩。比如说英语有en-us,en-uk等。。我该怎么把它绑起来
代码
HTML
示例
谢谢你抽出时间
更新 为了提供适合我的完整解决方案并最终帮助未来的用户,我使用了与上面相同的
HTML
布局,并将其与
注意:此效果会根据为浏览器选择的语言触发更改。关于如何在Google Chrome中执行此操作的示例:
- 转到设置->
- 向下滚动至并单击“显示高级设置…”->
- 单击“语言和输入设置…”->
- 然后选择所需的语言,单击“完成”,然后重新启动浏览器
我希望这会有所帮助。您可以将
navigator.language
一分为二,只使用第一个参数(语言),并使用该参数选择具有该类的li
:
var userLang = navigator.language || navigator.userLanguage;
// Check if the li for the browsers language is available
// and set active if it is available
if($('.' + userLang.split('-')[0]).length) {
$('li').removeClass('active');
$('.' + userLang.split('-')[0]).addClass('active');
}
或者您是否也将根据国家(例如美国和英国英语)更改
li
?在客户端进行国际化是不寻常的。想必这是需要的,而不是服务器端?@Orbling,不幸的是,在这种情况下是需要的。你不能通过AJAX或类似的方式按需加载语言集吗?将所有的翻译都放在原位需要做很多事情,这对于某些元素类型来说是痛苦的。您可能只需要使用.show()
,而不用担心选择器以外的任何元素上的活动类。开始得好。。但我建议检查一下这种语言是否存在。@Gianpaolodino为什么?根据MDN,不应使用navigator.language。它不反映真实的语言环境设置,而是反映旧版本浏览器中使用的浏览器的语言。现在已经改变了,但出于兼容性的原因,应该将其作为最后一个选项。@StanE 3岁回答:D@GianpaoloDiNino那又怎么样?我真的不明白为什么现在人们对老话题有如此大的问题。那么多人对此有反感,这有什么原因吗?“如果一个人能写一些有用的东西或至少是一个提示,那么我看这没有问题。”斯坦完全同意。这个问题已经有了3万个视图,检测本地化并不是一个已经消失的问题。您可以使用“编辑”按钮自行改进问题,使其与当今标准仍然相关:)
var userLang = navigator.language || navigator.userLanguage,
countries = ['fr', 'de', 'it', 'ja', 'es'],
languagues = ['fr', 'de', 'it', 'ja', 'es'];
if (userLang === "fr") {
$('li').removeClass('active');
$('.fr').addClass('active');
}
var userLang = navigator.language || navigator.userLanguage;
// Check if the li for the browsers language is available
// and set active if it is available
if($('.' + userLang.split('-')[0]).length) {
$('li').removeClass('active');
$('.' + userLang.split('-')[0]).addClass('active');
}