【发布时间】:2013-08-19 15:16:37
【问题描述】:
场景
我需要创建一个页面(仅限客户端),用于检测浏览器使用的语言并显示与该语言相关的适当类元素,并隐藏其他元素。
英语将是默认语言,因此如果数组中没有匹配的单元格,则会显示此语言。
我正在使用navigator.language 和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 (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');
}
示例
感谢您的宝贵时间。
更新
为了提供对我有用的完整解决方案并最终帮助未来的用户,我使用了上面相同的 HTML 布局并将其与 putvande's jQuery solution 结合使用。
注意:此效果会根据为浏览器选择的语言触发更改。作为如何在 Google Chrome 中执行此操作的示例:
- 进入设置->
- 向下滚动并单击“显示高级设置...”->
- 点击“语言和输入设置...”->
- 然后选择你想要的语言,点击完成并重启你的浏览器。
我希望这会有所帮助。
【问题讨论】:
-
在客户端进行国际化是不寻常的。大概需要那个而不是服务器端?
-
@Orbling,不幸的是,在这种情况下是的。
-
您不能通过 AJAX 或其他方式按需加载语言集吗?在原地进行所有翻译将需要尽可能多地完成,这对于某些元素类型来说会很痛苦。您可能只使用
.show()而不必担心选择器以外的任何元素上的活动类。
标签: jquery