2011-09-10 22 views
1

我想翻譯我的網站使用Google Translate。我使用下面的代碼。如何使用Google Translate翻譯網站表單字段(文本框,文本區域)中的值?

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

它工作正常與網站的文本,但不翻譯的文本框,文本區域的文本。有解決方案嗎?

+0

準備應該是你的結果大部分友好。翻譯自動可以對所謂的要點翻譯有所幫助,儘管沒有完全報銷。 – tripleee

回答

2

您可以遍歷頁面中的元素,並對Google翻譯API進行單獨的ajax調用,以逐個翻譯它們,並替換textbox/textarea值。

使用jQuery,你可以迭代你的文本框,textareas和你想要的其他東西。代碼應該是這樣的:

$('input:text').each(function(index) { 

    var elementId = $(this).attr("id"); 

    //Call the Google API 
    $.ajax({ 
     type : "GET", 
     url : "https://ajax.googleapis.com/ajax/services/language/translate", 
     dataType : 'jsonp', 
     cache: false, 
     contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
     data : "v=1.0&q="+$("#"+elementId).val()+"&langpair=en|es", 
     success : function(iData){ 
      //update the value 
      $("#"+elementId).val(iData["responseData"]["translatedText"]);  
     }, 
     error:function (xhr, ajaxOptions, thrownError){ } 
    }); 
}); 

正如你所看到的,參數&langpair=en|es問到從英語譯成西班牙語。

只要記住每個<input type="text".../>將會有一個呼叫,所以您可能需要添加某種驗證來過濾無用的呼叫!您可能還想驗證Google的答案。

這裏是爲了體會那種響應的鏈接谷歌會送你: http://code.google.com/apis/language/translate/v1/using_rest_translate.html

編輯:由於免費使用谷歌的API將2011-12-01被關閉,你可以使用Apertium。呼叫和響應幾乎相同:http://api.apertium.org/json/translate?q=hello%20world&langpair=en|es

+2

另外請注意,谷歌將在幾個月內關閉API,顯然是因爲像這樣的努力。 http://news.ycombinator.com/item?id=2590374 – tripleee

+1

我同意@tripleee如果你的頁面包含大量的輸入框和文本區域,這種方法並不是最好的,因爲你會投入大量的電話到API,如果你的網站有很多流量,谷歌不會愛你。 – pgratton

+1

也許值得注意的是,Apertium的語言曲目相當有限,至少暫時是如此。 – tripleee

0

另一種解決方案是將所有呼叫都打包在@ pgratton的答案中,只需一次呼叫。使用標籤分隔所有內容。

例如,把三個文本框的所有內容在一個字符串是這樣的:

<t1>Desk</t1><t2>Monitor</t2><t3>Keyboard</t3> 

,並將其發送給谷歌API。然後,您將獲得如下所示的內容:

<t1>Secretária</t1><t2>Ecrã</t2><t3>Teclado</t3> 

這就是您如何保存API調用的方法。差不多兩年前我已經嘗試過了,那時它正在工作。您只需確保標籤或您用於分隔字段的內容不會被翻譯,並且不會在翻譯過程中丟失。分隔符必須保留。

相關問題