【问题标题】:Detect Google Website Translator change of language检测谷歌网站翻译的语言变化
【发布时间】:2015-03-12 04:40:03
【问题描述】:

我在我的网站上使用 Google 网站翻译器让用户即时翻译网站。使用此代码:

    function googleTranslateElementInit() {
        new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'ar,de,el,en,es,fr,it,ja,ko,nl,ru,zh-CN', layout: google.translate.TranslateElement.FloatPosition.BOTTOM_RIGHT}, 'google_translate_element');
    }

这很好用,现在唯一的事情是我需要知道用户实际选择了哪种语言。 我想检测用户手动选择语言的时间以及翻译人员进行自动翻译的时间,因为它可以根据浏览器设置进行自动翻译。

我想做的是在更改语言时添加一个事件侦听器。 IE。不仅在用户手动设置语言时,而且在每次翻译人员实际进行翻译时。 例如。翻译开始或完成时,或页面“刷新”以显示新语言时。

我需要收集这些信息并将其发送到服务器,以了解稍后发送给用户的电子邮件使用什么语言。由于此信息是从多个地方收集的,因此我不想在每次需要信息时手动检查所选语言,而是添加一个事件侦听器来检测语言更改并触发 AJAX 方法以将信息保存在会话中服务器。

谢谢!

【问题讨论】:

    标签: javascript jquery google-translate


    【解决方案1】:

    当用户手动选择一种语言(更改选择框的值)时,您可能会得到用

    选择的语言
    $('.goog-te-combo').on('change',function(){
           language = $("select.goog-te-combo option:selected").text();
            alert(language);
        });
    

    Fiddle

    如果您的页面刷新并且翻译人员翻译了您的页面,您可以使用setTimeout 获取当前使用的语言。这并不完美,但它肯定有助于交配.. :)

    【讨论】:

    • 感谢您的回答。我也设法使用$('body').on('change', '#google_translate_element select', updateLanguage); 实现了这一点,并在updateLanguage 方法中通过$('#google_translate_element select').val() 检索值。这很好用,但是我想找到一种方法来监听当翻译器使用新语言内容更新页面时引发的事件。
    • $('body').on('change', '#google_translate_element select', updateLanguage); @Blizwire 提到的效果很好。当刷新页面以获取当前语言时,我选择读取由谷歌翻译插件存储的cookie“googtrans”..
    【解决方案2】:

    您可以使用setInterval 定期检查语言是否更改:

    var translatedText='';
    var interval=setInterval(function(){
       var el=document.getElementsByClassName('goog-te-menu-value')[0];  
       if(el && el.innerText!==translatedText){
            translatedText=el.innerText;
            console.log('changed');
        }
    },200);
    

    工作 JS Bin:http://jsbin.com/neteqihage/1/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2015-03-29
      • 1970-01-01
      • 2019-05-29
      相关资源
      最近更新 更多