触发Google Web翻译元素

时间:2011-06-10 07:01:11

标签: jquery google-translate

由于google翻译api正在关闭,我试图让google翻译网页元素在整个会话期间为用户工作,这样他们就不必在每个不同的地方将选择框选项更改为他们的语言页。

初始加载函数如下:

function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en'}, "google_translate_element");
 };

google_translate_element是放置选择框的div。当选择框在那里时,它总是有“goog-te-combo”类。我可以使用jQuery更改框的值,没有问题,例如。 $('。goog-te-combo')。val('fr')将该框更改为法语。 但是当我尝试使用$('。goog-te-combo')。触发器()使用所有排序事件类型(更改,单击,鼠标,mousedown等)来触发翻译时,翻译永远不会触发。

有没有人知道触发翻译的方法?

4 个答案:

答案 0 :(得分:10)

这是一个老问题,但我会回答,因为我遇到了同样的问题并绕过它。 我必须从jQuery获取DOM并激活并执行。

 function fireEvent(element,event){
     console.log("in Fire Event");
    if (document.createEventObject){
            // dispatch for IE
            console.log("in IE FireEvent");
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
            // dispatch for firefox + others
            console.log("In HTML5 dispatchEvent");
            var evt = document.createEvent("HTMLEvents");
            evt.initEvent(event, true, true ); // event type,bubbling,cancelable
            return !element.dispatchEvent(evt);
    }
 }

我用

来称呼它
 var jObj = $('.goog-te-combo');
 var db = jObj.get(0);
 jObj.val(Lang);
 fireEvent(db, 'change');

答案 1 :(得分:3)

谷歌翻译元素语言应该在页面之间进行,但有时可能需要一些时间。在早期,它不会在所有浏览器的谷歌浏览器上持续存在,但它在Firefox和IE中运行良好。在撰写本文时,它在Chrome中也适用于我。

但是,如果要在第一页加载时强制转换为特定语言,则可以在页面加载时使用Google-mentioned URL哈希/片段。但是,由于在页面加载后添加哈希似乎不会触发它,因此您必须将链接置于第一次加载用户的链接中。以下是强制立即翻译的哈希语法。

http://www.somedomain.com/#googtrans(en|TARGET_LANG)

例如,要在翻译系统完成后立即将页面翻译成法语。

http://www.somedomain.com/#googtrans(en|fr)

我似乎无法破译语法的含义,但我只是在原始英文页面上尝试它。 #googtrans(en|fr|ja)导致日语,但#googtrans(en|ja|fr)也是如此。省略en|似乎也没有任何影响。他们没有详细介绍Google posted this tidbit(在“什么是Google翻译网页元素?”下)的细节。

答案 2 :(得分:3)

我整天都遇到过这个问题的问题:)。但我得出了一个结论。

使用Chrome检查器工具,我发现在window.load事件触发后创建了Google翻译选择框!如果您尝试使用jQuery编辑它,这是一个大问题。

所以我找到了一个解决方法。我知道这可能是一个错误的方法,但它对我有用。在我的情况下,我希望(工作相关的请求)更改选择框的第一个选项,通常是“选择你的语言”到不同的东西,例如。 123。

所以我实施了以下解决方案:

$(window).load(function () {
   setTimeout(function () {
      if ($("select.goog-te-combo option:first").val()=='')
      {
         $("select.goog-te-combo option:first").text("123");
      }
   }, 1000);
});

希望我以某种方式帮助过某人。

关心所有人。

答案 3 :(得分:1)

之前没有这样做,但是通过查看Google Chrome中的检查员,我发现google加载了一个名为main.js的文件。查看该文件,您可能会知道它们是如何触发切换的。 main.js当然是打包和缩小的,所以尝试使用这个JS Beautifier

我会更多地看看它并回复你:)希望它有所帮助!

<强>更新

你不能触发这样的元素的原因似乎是因为选择框在iframe中。您无法与其他域的iframe进行互动。