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');
}