Автоматический перевод на странице сайта
В связи с тем, с 1 декабря 2011 года Google Language API стал платным многие веб-приложения с автоматическим переводом перестали работать. Что делать вебмастерам, которым этот сервис помогал в повседневной жизни? Что делать тем у кого работали приложения на основе перевода текстов "на лету"? Пришлось искать альтернативу.
Многие ждали подобный сервис от Яндекса, но их вариант API для перевода текстов пока не готов. Я нашел вполне себе рабочий вариант от Microsoft - Microsoft Translator AJAX API. Радость от находки быстро закончилась, когда я начал изучать как его подключать.
Дело в том, что в инструкции предлагают получить Access Token, а для этого надо зарегистрироваться на Azure Marketplace (Azure это облачный сервис от Microsoft), потом зарегистрировать свое приложение в разделе разработчиков Azure. Я был переполнен решительности и все это сделал, даже было хотел написать скрипт, который получает Access Token на основе полученных данных, но не тут-то было. Я посмотрел на код который они почему выложили в виде картинки и пришел к выводу что этот самый Access Token и не нужен вовсе. Наверное я просто не внимательно читал, там все на английском :)
Оказалось, что для запроса на перевод с помощью Ajax нужен только appID, которого я не смог найти в Azure. Итак, вот результат. Инструкция по подключению Bing Translator API к вашему сайту:
1. Получить Live ID если у вас его еще нет
2. Добавить свое веб-приложение в панели вебмастера bing.
3. Составить скрипт для перевода с использованием Application ID, который будет выдан вашему приложению.
В целом последовательность действий практически такая же как была у Google. Приведу пример js-функции, которая осуществляет перевод.
function MS_Translate( src_selector, dst_selector ){
window.mycallback = function( response ){
$( dst_selector ).val( response );
}
var text = encodeURI( $( src_selector ).val() );
var appId = "";
var url = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?oncomplete=mycallback&appId=" + appId + "&to=en&text=" + text;
var s = document.createElement("script");
s.src = url;
$("head").get(0).appendChild(s);
}Функция принимает в качестве параметров селекторы исходного текста и конечного. У меня это <input> элементы. Далее регистрируется функция обратного вызова, которая присвоит полученное значение нужному элементу. Потом создается элемент <script> с адресом вызова переводчика, который вставляется в документ. Ответ который будет получен от сервера Bing Translator выглядит примерно так:
mycallback("Hello World");
Параметры запроса:
oncomplete - функция которая вызывается для ответа
appID - идентификатор приложения из www.bing.com/developers/appids.aspx
from - (не обязательный параметр) язык с которого надо перевести. Если не указан, то язык источника выбирается автоматически. Список поддерживаемых языков тут: http://msdn.microsoft.com/en-us/library/hh456380.aspx
to - язык на который надо перевести.
text - URL-encoded строка с текстом который нужно перевести.
Остается надеется, что Microsoft не сделает этот сервис платным.

Комментарии
Павел11.12.2015 18:32
Increadible, тут речь идет о том, чтобы встроить перевод в свое приложение, а не использовать стороннее.
Increadible30.10.2015 19:26
Для автоматического перевода страницы лучше пользоваться расширением гугл переводчика!http://compage1.ru/