【发布时间】:2014-12-20 21:59:42
【问题描述】:
我正在完善翻译脚本,脚本本身实际上运行良好(在大多数计算机上)。我们发现该脚本在母语不是英语的计算机上无法正常运行。
脚本如下:
$('.translation-links a').click(function(e) {
e.preventDefault();
var lang = $(this).data('lang');
$('#google_translate_element select option').each(function(){
if($(this).text().indexOf(lang) != -1) {
$(this).parent().val($(this).val());
var container = document.getElementById('google_translate_element');
var select = container.getElementsByTagName('select')[0];
triggerHtmlEvent(select, 'change');
}
});
});
.translation-links a 类似于:
<li><a href="#" data-country="south-africa" data-lang="Afrikaans"><span class="south-africa"></span>Afrikaans</a></li>
有问题的那一行是
if($(this).text().indexOf(lang) != -1) {
我们已通过故障排除将其范围缩小到该范围,但我们想知道是否有其他方法可以编写它以防止出现问题。也许是 indexOf 的替代品?我们不确定为什么母语很重要,所以如果有人对此也有一些见解,我们将不胜感激!
【问题讨论】:
-
你能显示
$(this).text中的内容吗? -
我会举一个翻译链接的例子,这样你就可以看到数据提取了。
-
@Johan 与在字符串上使用 indexOf() 不等效。
$.inArray()是在没有任何Array.prototype.indexOf方法的情况下处理旧浏览器。但是IIRC,所有浏览器都支持String.prototype.indexOf方法 -
您是否在其他本地语言的浏览器上看到相同的文本?我的意思是,他们不会翻译语言标签吗?
-
但是值(语言前缀)无论如何都保持不变。例如,西班牙语与西班牙语,但两者都有一个
value的“es”
标签: javascript jquery google-translate