jQuery浏览器语言检测

脚本

我需要创建一个页面(仅限客户端)来检测浏览器使用的语言,并显示与该语言相关的相应类元素,并隐藏其他语言。

英语将是默认语言,因此如果数组中没有任何单元格匹配,则会显示。

我正在使用navigator.languagenavigator.userLanguage (IE)值来检测浏览器当前使用的语言。

我目前有一些代码正在进行中,但我不确定是否有最佳方法来整合所有潜在的可能性,然后使用数组选择它们。

还有一种语言与一个国家联系在一起的可能性。 比如说英语作为一个例子有en-us,en-uk等。我怎么把它绑在一起?

HTML

 
  • English: Some text in english
  • French: Some text in french
  • German: Some text in german
  • Italian: Some text in italian
  • Japanese: Some text in japanese
  • Spanish: Some text in spanish

JS(WIP)

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

小提琴

感谢您的时间。


UPDATE

为了提供对我有用并最终帮助未来用户的完整解决方案,我使用了与上面相同的HTML布局,并将其与putvande的jQuery解决方案相结合。

这是一个有效的例子 。

注意:此效果会根据为浏览器选择的语言触发更改。 有关如何在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 (例如美国和英国的英语)?