我在改进翻译脚本的过程中,脚本本身实际上工作正常(在大多数计算机上)。我们发现该脚本在母语不是英语的计算机上无法正常运行。
脚本如下:
$('.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的替代品?我们不确定母语为何如此重要,所以如果有人对此有所了解,我们也会感激它!
答案 0 :(得分:1)
您似乎应该在点击的元素“data-lang
字符串和选项value
之间寻找匹配,这两个元素都应该免于翻译。
如果是这样,那么它应该如下:
$('.translation-links a').on('click', function(e) {
e.preventDefault();
$('#google_translate_element select').eq(0).val($(this).data('lang')).trigger('change');
});