2011-04-06 50 views
8

的网站上我尝试添加了谷歌翻译下拉使用下面的代码:更改谷歌翻译下拉编程

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

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

当您从谷歌的脚本插入,谷歌的翻译栏的下拉列表中选择显示在顶部并将所有文本翻译为所选语言。

但是,如果我尝试并触发使用JavaScript的下拉变化,这是行不通的:

$('.goog-te-combo').val('fr') 

“法国”从下拉菜单中选择,但是谷歌翻译不会被触发。

为什么o为什么不起作用?我也试过:

$('.goog-te-combo').trigger('click') 
$('.goog-te-combo').change() 

更新:FYI这不是我的网站。我使用Chrome控制台加载jQuery并执行jQuery方法。

+1

它是一个'iframe'吗? – Blender 2011-04-06 16:40:27

+0

检查DOM树后,Google脚本添加的下拉列表不会显示在iframe中。 – 2011-04-06 18:29:27

+0

如果您在加载脚本之前添加'

',以便Google可以使用[其他UI](http://translate.google.com/translate_tools)填充该脚本,则会得到一个不属于“ iframe'。不幸的是,即使在这些元素上调用事件触发器也不会触发翻译(但所选项目确实会更改)。 – patridge 2011-06-13 20:22:45

回答

1

在看你的页面看起来,jQuery没有加载,所以你将无法使用$()函数。

您需要在您的<head></head>部分添加到jQuery的参考,如:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

然后

$('.goog-te-combo').val('fr'); 

应该工作。

+0

如果'$('。goog-te-combo')。val('fr')'没有做任何事情,但是OP说它改变了下拉菜单,这就会有意义。 – 2011-04-06 17:02:35

+0

我明白,但我看了一下页面,并尝试在控制台中运行'$('。goog-te-combo')。val('fr');'并得到错误'TypeError:Can not call method 'val'为null。搜索源代码时,没有提到'jQuery'。因此,无论他发布这个问题还是它从未工作过(或者它可能记得从之前的选择'fr',并且OP误认为它正在工作),他都删除了jQuery。 – ggutenberg 2011-04-06 17:06:14

+1

我不认为页面属于OP。我相信他们正试图与来自外部域的页面进行交互......因此存在这个问题。 – 2011-04-06 17:13:20

1

花了很多时间试图让它工作,我实现了jquery翻译插件,并能够实现我想要做的一切,包括在页面加载时自动翻译为浏览器语言和可点击语言链接,标志等插件的

详情和下载,在这里http://code.google.com/p/jquery-translate/

+0

嘿,这个插件仍然工作?我花了几个小时试着没有快乐。谢谢 – user989952 2014-04-24 12:07:13

9

你可以有你的下拉菜单触发页面重载。您可以重新加载页面,其中#googtrans(en|ja)#googtrans/en/ja附加到URL,或者在重新加载之前将googtrans cookie值设置为/en/ja(其中ja是所选目标语言的示例)。

3

添加到您的代码:

//to get currently selected language 
string language=Request.Cookies["googtrans"].Value 
//to set desired language 
Response.Cookies["googtrans"].Value = Your language; 
//eg: Response.Cookies["googtrans"].Value = "/en/hi"; 
+0

我试过这个在控制台,它没有工作 – 2014-11-13 22:47:28

4

我知道这已经是一个老话题,但我只是想分享我通过烧制,谷歌翻译选择要素变更事件与问题,提出了解决方案。

添加将使用dispatchEvent或fireEvent函数功能:

function triggerHtmlEvent(element, eventName) { 
var event; 
if(document.createEvent) { 
    event = document.createEvent('HTMLEvents'); 
    event.initEvent(eventName, true, true); 
    element.dispatchEvent(event); 
} else { 
    event = document.createEventObject(); 
    event.eventType = eventName; 
    element.fireEvent('on' + event.eventType, event); 
} } 

设定值后,得到的DOM对象的选择(使用document.getElement ...)及拨打以上功能:

triggerHtmlEvent(selectObject, 'change'); 
+0

这是一个解决方案!万分感谢!!! – 2013-04-25 14:36:25

+0

嗨,我对这个解决方案非常感兴趣,它正是我在过去3天里一直在寻找的东西。你碰巧有一个工作版本,我想我错过了一些东西“设置值后,获取选择的DOM对象(使用document.getElement ...)”感谢您的帮助 – user989952 2014-04-24 10:45:13

+5

我得到的错误: TypeError:element.dispatchEvent不是函数 – user989952 2014-04-24 10:56:21

4

//获得当前所选的语言

string language=Request.Cookies["googtrans"].Value 

//设置所需语言

Response.Cookies["googtrans"].Value = Your language; 

//例如:Response.Cookies [” googtrans“]。Value =”/ en/hi“;