15

设想

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

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

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

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

也有可能不止一种语言与一个国家相关联。比如说英语有 en-us、en-uk 等。我怎么把它联系起来?

代码

HTML

<ul class="text">
    <li class="en active">English: Some text in english</li>
    <li class="fr">French: Some text in french</li>
    <li class="de">German: Some text in german</li>
    <li class="it">Italian: Some text in italian</li>
    <li class="ja">Japanese: Some text in japanese</li>
    <li class="es">Spanish: Some text in spanish</li>
</ul>

JS(在制品)

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

例子

小提琴

感谢您的时间。


更新

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

这是一个工作示例

注意:此效果会根据为浏览器选择的语言触发更改。作为如何在 Google Chrome 中执行此操作的示例:

  • 转到设置->
  • 向下滚动并单击“显示高级设置...”->
  • 单击“语言和输入设置...”->
  • 然后选择您想要的语言,单击完成并重新启动浏览器。

我希望这有帮助。

4

1 回答 1

28

您可以将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根据国家/地区(例如美国和英国英语)进行更改?

于 2013-08-19T15:26:44.547 回答