【问题标题】:How to translate injected text using Google Translate web plugin?如何使用谷歌翻译网络插件翻译注入的文本?
【发布时间】:2016-12-19 06:28:30
【问题描述】:

我已经在我的网站中实现了免费谷歌翻译插件,但是在我使用 JS 将文本注入页面后,它不会翻译新注入的文本。

我不能在获取文本后延迟翻译过程,因为用户操作会导致文本注入。

我看过这个问题:https://stackoverflow.com/questions/36100201/how-i-can-call-google-translate-using-function-on-submit

但它没有答案,也不是我想问的确切问题。

  1. 有没有办法给google的翻译JS函数发送回调函数?
  2. 使用谷歌网站翻译插件有什么限制?

【问题讨论】:

  • 我发现它通常会翻译动态注入的文本,但在 35% 的情况下它会停止工作。

标签: javascript translation frontend google-translate


【解决方案1】:

当您滚动页面时,Google 翻译网络插件会自动翻译页面上的所有可见文本。

  • 我发现使用 Google 翻译网络插件没有任何限制。
  • 应自动翻译新注入的文本(使用 JavaScript)。
  • 我无法在 google 的 API 中找到回调机制,但我找到了一种可行的解决方法(使用事件侦听器),如下所述。

在谷歌翻译网页插件中实现更改语言的回调机制:

//Google Translate
function googleTranslateElementInit() {
    new google.translate.TranslateElement({
        pageLanguage: 'iw',
        //layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
        includedLanguages: 'ar,en,fr,hu,ru',
    }, 'google_translate_element');
}
  • 我已注释掉 layout 以使其看起来像常规 SelectBox。
  • 在加载文档时,我添加了 eventListener: document.getElementById("google_translate_element").addEventListener("change", onLangChange, false);
  • 最后我添加了 onLangChange 函数,以便在用户更改/选择语言时启动:

    function onLangChange() {
      //option is selected
      var e = this.getElementsByTagName("select")[0];
      var txtValue = e.options[e.selectedIndex].text;
      console.log(e + " " + txtValue);
    }
    

我希望这会对这里的人有所帮助!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多