1

Google翻訳を使用して自分のウェブサイトを翻訳したい。以下のコードを使用しました。

<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>

Webサイトのテキストでは正常に機能していますが、テキストボックス、テキスト領域のテキストは翻訳されません。解決策はありますか?

4

2 に答える 2

2

ページ内の要素を繰り返し処理し、Google Translate APIに対して個別のajax呼び出しを行って、それらを1つずつ翻訳し、textbox/textareaの値を置き換えることができます。

jQueryを使用すると、テキストボックス、テキストエリア、その他必要なものすべてを反復処理できます。コードは次のようになります。

$('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は英語からスペイン語への翻訳を要求します。

ごとに1つの呼び出しが行われることを覚えておいて<input type="text".../>ください。したがって、不要な呼び出しをフィルタリングするために、ある種の検証を追加することをお勧めします。また、Googleの回答を検証することもできます。

Googleから送信される応答の種類を理解するためのリンクは次のとおりです 。http ://code.google.com/apis/language/translate/v1/using_rest_translate.html

編集: GoogleのAPIの無料使用は2011年12月1日にシャットダウンされるため、Apertiumを使用できます。呼び出しと応答はほとんど同じです:http://api.apertium.org/json/translate?q=hello%20world&langpair=en|es

于 2011-09-18T19:50:44.323 に答える
0

もう1つの解決策は、@pgrattonの応答ですべての呼び出しを1回の呼び出しでラップすることです。タグを使用してすべてを分離します。

たとえば、次のように3つのテキストボックスのすべてのコンテンツを1つの文字列に入れます。

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

そしてそれをGoogleAPIに送信します。次に、次のようなものが表示されます。

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

これは、API呼び出しを保存する方法です。私はほぼ2年前にそれを試しました、そしてそれはその時働いていました。タグまたはフィールドを区切るために使用しているものが翻訳されておらず、翻訳で失われないことを確認する必要があります。セパレータは保持する必要があります。

于 2011-09-20T12:50:10.243 に答える