谷歌网站翻译自动显示模式

10
我想把Google网站翻译器加到我的网站上。我想使用自动模式,这样如果您的浏览器语言与页面语言不同,就会显示工具栏。但每次我选择自动显示模式时,它给我的代码都是“分页式”的。有人能告诉我我做错了什么,或提供正确的代码吗?
谢谢。
编辑:
<div id="google_translate_element"></div>
<script type="text/javascript">
    function googleTranslateElementInit() {
        new google.translate.TranslateElement({pageLanguage: 'en', layout:     google.translate.TranslateElement.FloatPosition.TOP_LEFT},     'google_translate_element');
    }
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

请发布您正在使用的代码。 - Dan Grahn
顺便提一下,这里有一些关于如何提问的信息。恭喜加入我们!http://stackoverflow.com/questions/how-to-ask - Dan Grahn
抱歉,那是直接从谷歌翻译的。 - user2532030
2
我和你遇到了同样的问题。自动设置无法保持。如果你查看网站的设置,即使你选择了自动选项,它也会不断重置回标签页。它应该更改“布局”选项的值,但不清楚该值应该是什么。 - Ryan Giglio
自动设置问题的修复 - https://dev59.com/_oXca4cB1Zd3GeqPECWO#32020889 - Mousey
显示剩余2条评论
8个回答

2
在尝试弄清autoDisplay为什么无法正常工作(即翻译菜单总是显示)时,我找到了W3C国际化检查器:http://validator.w3.org/i18n-checker/ W3C国际化检查器提醒我,Accept Headers返回: Accept-Language: en-US,en;q=0.8
我最初粘贴到我的网站文件中的Google生成的代码只有一个值来检查页面语言。但我进行了编辑,如下所示,并将数组传递给pageLanguage键,我认为现在它已经起作用了。
<div id="google_translate_element"></div>
<script type="text/javascript">
    function googleTranslateElementInit() {
        new google.translate.TranslateElement({pageLanguage: ['en', 'en-us'], autoDisplay: false, multilanguagePage: true, gaTrack: true, gaId: 'UA-403844-8'}, 'google_translate_element');
    }
</script>
<script type="text/javascript" src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

我尽力通过更改Google Chrome中的语言设置来进行测试,但我不完全信任它是否有效。对于没有配置en或en-US浏览器的人,翻译菜单应该出现。您可以将任何语言传递到数组中,以便为您的需求正确配置它。

如果有任何反馈,请告诉我。希望这有所帮助。


2

我在这里看到了另一个例子:

检测用户首选语言并自动使用Google翻译

它有一个参数autoDisplay: false,

为了在网站语言不匹配时只获取翻译栏,我删除了容器,并使用了autoDisplay: true,

当使用其他语言时,我可以看到翻译栏,但没有下拉菜单。


0
有趣的是,Google的翻译自动功能的代码检索似乎出了问题,不是吗?我在他们的Rincewind级别向导中尝试了许多迭代来进行自定义设置,但默认设置是选项卡功能,与我的网站设计不符。
这是针对英语网站的,如果您的网站默认语言栏不应该显示,请更改语言代码。如果您不使用跟踪,请将其删除。
<!-- <div id="google_translate_element"></div> -->
<script type="text/javascript">
    function googleTranslateElementInit() {
        new google.translate.TranslateElement({
        pageLanguage: 'en', 
        autoDisplay: true,
        layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 
        gaTrack: true, gaId: 'UA-xxxxxx-x'
        }, 'google_translate_element');
    }
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

基本上,@gm-sb上面的答案已经讲得很清楚了,但是这里提供完整的可运行代码,这样您就可以一次性地使它完全有效。 - Fiasco Labs
即使您的语言与页面相同,仍会提示您选择语言。请参见此处的新解决方案 - https://dev59.com/_oXca4cB1Zd3GeqPECWO#32020889 - Mousey
嗯,奇怪的是因为上面的代码在我的网站上运行正常,没有那个小怪异。如果它决定对我不利,我会记住这一点……这只是存在于那里的一些小事情,会让我的工作伙伴疯狂,因为他必须与随机的奇怪问题作斗争。 - Fiasco Labs
我尝试了不同的设置,比如autoDisplay,但是没有起作用。使用原生的Android浏览器时,每次都会提示选择语言,即使语言与页面的语言相同。本地化(en-US)并没有引起问题,但也需要解决。我在使用Google向导时没有遇到任何问题,只有在它生成的代码中出现了问题。可能是因为我使用了Float布局而不是内联布局吗? - Mousey

0

为了仅在您的页面与用户页面不同时显示翻译器,请进行服务器端检查,并仅在必要时包含代码。

请参见获取浏览器语言

您的URL不正确。请添加"http:"。请参见下面的工作示例。

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

<script type="text/javascript">

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

</script>

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

谢谢您的回答,但我仍然会看到“选择语言”的下拉框。我只想让该栏在浏览器语言与网站语言不同时显示。我真的不想使用display:none。我相信您以前可以很容易地做到这一点... - user2532030
6
在生成代码的设置中,谷歌提供了一个名为“自动”的选项,它只会在你使用不同语言时才显示浏览器顶部的翻译栏。当你选择该选项时,它会忽略你的选择并提供代码来始终显示下拉菜单(他在问题中提到的“分页选项卡”)。他想要的是谷歌内置的自动显示代码,因为他们的代码生成器出了问题。 - Ryan Giglio
1
布局选项应该具有不同的值来反映“自动”设置,但是目前还不清楚它的值是什么,并且我找不到一个包含该代码的网站可以复制。 - Ryan Giglio
1
@RyanGiglio 你好,2016年我也遇到了同样的问题,代码生成器忽略了“自动”选项。你找到解决方法了吗? - JCarlosR

0
<div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'id', includedLanguages: 'id', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

1
你能简要地解释一下吗? - Robert

-1
<div id="google_translate_element"></div><script type="text/javascript">


function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE, autoDisplay: false, multilanguagePage: true}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

-1
<div id="google_translate_element"></div>
<script type="text/javascript">
    function googleTranslateElementInit() {
      new google.translate.TranslateElement({
          pageLanguage: 'es', 
          includedLanguages: 'es', 
          layout: google.translate.TranslateElement.InlineLayout.SIMPLE
      }, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

-1
<div id="google_translate_element"></div><script type="text/javascript">
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en', autoDisplay: false}, 'google_translate_element');
}
</script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

1
除了你需要提供一些描述,返回翻译后的文本。 - ravthiru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接