Как я могу использовать Google Translate для перевода значений в поле формы веб-сайта (текстовое поле, текстовое поле)? - PullRequest
1 голос
/ 10 сентября 2011

Я хочу перевести свой сайт, используя 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>

Работает нормально с текстом сайта, но не переводит текстовое поле, текст текстовой области. Есть ли решение?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2011

Вы можете перебирать элементы на своей странице и делать отдельные вызовы ajax в Google Translate API, чтобы переводить их один за другим, и они заменяют значения 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 запрашивает перевод с английского на испанский.

Просто помните, что для каждого будет сделан один вызов<input type="text".../>, так что вы можете добавить какую-то проверку для фильтрации бесполезных вызовов!Возможно, вы также захотите проверить ответ Google.

Вот ссылка, чтобы понять, какой ответ Google отправит вам: http://code.google.com/apis/language/translate/v1/using_rest_translate.html

РЕДАКТИРОВАТЬ: СБесплатное использование API Google будет закрыто 2011-12-01, вы можете использовать Apertium.Звонок и ответ почти одинаковы: http://api.apertium.org/json/translate?q=hello%20world&langpair=en|es

0 голосов
/ 20 сентября 2011

Другое решение - заключить все вызовы в ответ @ pgratton только в один вызов. Разделите все, используя теги.

Например, поместите все содержимое трех текстовых полей в одну строку следующим образом:

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

И отправьте его в Google API. Затем вы получите что-то вроде:

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

Так вы можете сохранять вызовы API. Я попробовал это почти два года назад, и тогда это работало. Вам просто нужно убедиться, что теги или все, что вы используете для разделения полей, не переводятся и не теряются при переводе. Разделители должны быть сохранены.

...