【问题标题】:Google translate get current language谷歌翻译获取当前语言
【发布时间】:2012-11-08 23:21:31
【问题描述】:

在网上找到零帮助我之后......

我正在为多语言网站使用当前功能:

function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'en,es',     layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}

但是,一旦用户更改当前语言,我不知道如何获取当前语言。 我不确定这是否可能。基本上我想更新到西班牙图像,如果 选择西班牙语而不是英语。任何帮助将不胜感激!

【问题讨论】:

    标签: javascript google-translate


    【解决方案1】:

    你不会相信的:

    window.setInterval(function(){
         var lang = $(".goog-te-menu-value span:first").text();
         alert(lang);
    },5000);
    

    我只需要在 Firebug 中挖掘找到容器并从第一个中获取值 跨度元素。希望这对某人有所帮助。

    【讨论】:

    • 这不起作用,因为 lang 将取决于浏览器的语言设置。
    • 那个元素.goog-te-menu-value span:first好像已经不存在了
    【解决方案2】:

    当前选择的语言存储在名为 googtrans 的 cookie 中。

    这是一个从 cookie 中获取值的简单示例(基于此处的 cookie 代码:What is the shortest function for reading a cookie by name in JavaScript?):

    function readCookie(name) {
        var c = document.cookie.split('; '),
        cookies = {}, i, C;
    
        for (i = c.length - 1; i >= 0; i--) {
            C = c[i].split('=');
            cookies[C[0]] = C[1];
         }
    
         return cookies[name];
    }
    console.log(readCookie('googtrans')); //eg. 'en/no' for Norwegian, '/en/hr' for Croatian, etc.
    

    【讨论】:

      【解决方案3】:

      调用google.translate.TranslateElement().c 会给出当前语言的代码。例如,“fr”表示法语,“en”表示英语,“de”表示德语。

      检查google.translate 全局对象通常可以提供信息。这有点困难 b/c 谷歌显然编译了代码,这样TranslateElement.c 之类的东西没有人类可读的名称,但稍加努力你就可以理解一些参数。

      【讨论】:

      • Google 已经更新了参数,所以google.translate.TranslateElement().c 不再有效
      • google.translate.TranslateElement().e 现在对我有用
      • google.translate.TranslateElement().e 只告诉我初始语言,而不是当前语言,一旦选择
      • 很公平。 .e 是我所需要的,但结合使用 .a.sd 似乎对大多数人都有帮助。
      • google.translate.TranslateElement().a.cd 适合我
      【解决方案4】:

      调用google.translate.TranslateElement().a.sd 会给出当前语言的标识符。

      示例: “fr” 表示法语,“en” 表示英语,“de” 表示德语,“it” 表示意大利语


      调用 google.translate.TranslateElement().a 是其他当前参数的对象,例如 Google Analytics(分析)跟踪代码。

      在控制台中检查一下,看看里面有什么。 How do I access the console?

      检查google.translate 全局对象通常可以提供信息。这有点困难,因为 Google 会不断更新代码,更改参数分配,并且显然已经以这样的方式编译代码,以至于像 google.translate.TranslateElement() 这样的东西没有人类可读的名称;不过,只要稍加努力,您就可以理解其中的一些参数。

      【讨论】:

      • google.translate.TranslateElement().e 现在适合我
      • @timpeterson google.translate.TranslateElement().e 只告诉我初始语言,而不是当前语言,一旦选择
      • 很公平。 .e 是我需要的,但结合使用 .a.sd 似乎可以帮助大多数人。
      • 我必须在我的网站上使用google.translate.TranslateElement().c
      【解决方案5】:

      您也许可以从 URL 中获取语言。

          function getUrlVars() {
          var vars = {};
          var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
              vars[key] = value;
          });
          return vars;
      }
      

      然后

      var selected_lang = getUrlVars()['lang'];
      

      【讨论】:

      • 我收到了关于变量的undefined。我认为翻译不会向 URL 添加任何内容,对吗?
      【解决方案6】:

      我在我的 joomla 网站中使用谷歌翻译模块。我的要求是我们在顶部有一个语言按钮。默认站点为英文。所以显示在顶部的按钮将是西班牙语。当用户单击按钮时,页面会翻译成西班牙语,按钮会变为英语,反之亦然。只要您不刷新页面,它就可以正常工作。 现在说翻译页面是西班牙语,顶部的按钮是英语。现在,当您刷新页面时,按钮会变回西班牙语(javascript 隐藏显示功能,默认为西班牙语)。由于我可以跟踪当前语言,因此顶部的语言按钮与选择的语言不相符。经过大量挖掘后,我发现了这个脚本,它帮助我解决了我的问题。我希望它也对其他人有所帮助。

      <script>
       //to get currently selected language
      window.setInterval(function(){
           lang = $("select.goog-te-combo option:selected").text();
          alert(lang);
      },5000);
       </script>
      

      【讨论】:

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