【问题标题】:Modifying output of google.translate.TranslateElement.InlineLayout.VERTICAL修改 google.translate.TranslateElement.InlineLayout.VERTICAL 的输出
【发布时间】:2021-01-28 17:12:57
【问题描述】:

我已阅读此答案 Modifying element from google.translate.TranslateElement results 以及其他处理修改样式和加载 Google 翻译翻译元素的内容。

与我的用法不同的是,我使用的是layout: google.translate.TranslateElement.InlineLayout.VERTICAL,而不是SIMPLE;所有其他答案都涉及SIMPLE

我遇到的一个问题是在 google-translate div 上使用 .fadeIn 不起作用。我仍然收到来自.goog-logo-link 的文字闪现,我看到Select a Language 在它变为Translate 之前。

这可能与 Modifying element from google.translate.TranslateElement results 中的 myTimer 函数有关。但是myTimer 是我想出如何将.goog-te-combo option:first 的文本从Select a Language 更改为Translate 的唯一方法。

所以,

  1. 有没有更有效的方法将.goog-te-combo option:first 的文本从Select a Language 更改为Translate

  2. 如何让.fadeIn 处理google-translate div,以便将文本从Select a Language 更改为Translate 并隐藏.goog-logo-link,直到整个div 淡入?

jsfiddle:https://jsfiddle.net/gfzcjwmv/7/

<script>
$(window).on('load', function() {
$(".goog-logo-link").empty();
$('.goog-te-gadget').html($('.goog-te-gadget').children());
$("#google-translate").fadeIn('1000');
});
</script>


<div id="google-translate">

<div id="google_translate_element"></div>

<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en', includedLanguages: 'af,ach,ak,am,ar,az,be,bem,bg,bh,bn,br',
layout: google.translate.TranslateElement.InlineLayout.VERTICAL
}, 'google_translate_element');
}
</script>

<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

</div>


<script>

$(window).on('load', function() {

function cleartimer() {     
    setTimeout(function(){ 
        window.clearInterval(myVar); 
    }, 1000);             
}
function myTimer() {
    if ($('.goog-te-combo option:first').length) {
        $('.goog-te-combo option:first').html('Translate');
        cleartimer();
    }
}
var myVar = setInterval(function(){ myTimer() }, 300); 

});

</script>

【问题讨论】:

    标签: javascript jquery google-translate


    【解决方案1】:

    有没有更有效的方法来改变 .goog-te-combo 的文本 option:first from Select a Language to Translate?

    看起来需要计时器,但如果等待 0 毫秒就足够了。

    我怎样才能让 .fadeIn 在 google-translate div 上工作,以便 将文本从选择语言更改为翻译和隐藏 .goog-logo-link 在整个 div 淡入之前一直隐藏?

    要使淡入淡出工作,您首先需要使用 css 设置 display:none;

    这就是它的样子 (我删除了删除谷歌链接的行,因为这违反了使用条款)

    (不幸的是 stacksn-p 不起作用)这就是为什么here is the working jsFiddle link

    function googleTranslateElementInit() {
      new google.translate.TranslateElement({
      pageLanguage: 'en', includedLanguages: 'af,ach,ak,am,ar,az,be,bem,bg,bh,bn,br,bs,ca,chr,ckb,co,crs,cs,cy,da,de,ee,el,en,eo,es,es-419,et,eu,fa,fi, fo,fr,fy,ga,gaa,gd,gl,gn,gu,ha,haw,hi,hr,ht,hu,hy,ia, id,ig,is,it,iw,ja,jw,ka,kg,kk,km,kn,ko,kri,ku,ky,la, lg,ln,lo,loz,lt,lua,lv,mfe,mg,mi,mk,ml,mn,mo,mr,ms,mt, ne,nl,nn,no,nso,ny,nyn,oc,om,or,pa,pcm,pl,ps,pt-BR, pt-PT,qu,rm,rn,ro,ru,rw,sd,sh,si,sk,sl,sn,so,sq,sr, sr-ME,st,su,sv,sw,ta,te,tg,th,ti,tk,tl,tn,to,tr,tt, tum,tw,ug,uk,ur,uz,vi,wo,xh,yi,yo,zh-CN,zh-TW,zu',
      layout: google.translate.TranslateElement.InlineLayout.VERTICAL
      }, 'google_translate_element');
    }
    
    
    $(window).on('load', function() {
      $('.goog-te-gadget').html($('.goog-te-gadget').children());
      $("#google-translate").fadeIn('1000');
    
    
      function cleartimer() {     
          setTimeout(function(){ 
              window.clearInterval(myVar); 
          }, 500);             
      }
      function myTimer() {
          if ($('.goog-te-combo option:first').length) {
              $('.goog-te-combo option:first').html('Translate');
              cleartimer();
          }
      }
      var myVar = setInterval(function(){ myTimer() }, 0); 
    
    });
    #google-translate {
      display: none;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div id="google-translate">
      <div id="google_translate_element"></div>
    </div>

    【讨论】:

    • 谢谢!这很好用。似乎函数的顺序并将它们全部组合到一个脚本块中也产生了很大的不同。
    • 啊,我发现的一个细节可能会或可能不会修复。选择一种语言后,Google 会在页面顶部添加一个带有“关闭”按钮的工具栏,以返回原始页面。当工具栏关闭时,goog-te-combo option:first 恢复为“Select a Language”。最好是在工具栏关闭时强制重新加载页面,或者让 myTimer 再次触发。我应该打开一个新问题吗?
    • 谢谢,我会的。
    • @BlueDogRanch 长话短说:jsfiddle.net/8m2xkez4 长话短说:如果你设置了一种语言,一个观察者将被实例化,这将提供检查&lt;html&gt; 是否删除类translated 的可能性。如果它删除了那个类,我们就知道工具栏已经关闭了。所以重置为“翻译”
    • 太好了!谢谢!
    猜你喜欢
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2022-08-11
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多