Переводчик Google для 1С 8.1

Перевод слов и фраз на другие языки Google Переводчиком (GoogleTranslate API). Без ВК. Сейчас работает без ключа API.

 

Код:

 

Функция ПреобразоватьСтрокуОтветаПереводчика (Строка, Ошибка=Ложь, КодОшибки=0, СтрокаОшибки = "") Экспорт
ТекСтрока     = Строка;
ТекСтрока     = СтрЗаменить (ТекСтрока, "{""responseData"": {","");
ТекСтрока     = Лев (ТекСтрока, СтрДлина (ТекСтрока)-1);
ТекСтроки     = СтрЗаменить (ТекСтрока, ",", Символы.ПС);
ТекПеревод     = СтрПолучитьСтроку (ТекСтроки, 1);
ТекПеревод     = СтрЗаменить (ТекПеревод, """translatedText"":""", "");
ТекПеревод     = Лев (ТекПеревод, СтрДлина (ТекПеревод)-2);
Возврат ТекПеревод;
КонецФункции

Функция ТекстДляУРЛ (Текст) Экспорт
хВСХ             = Новый COMОбъект ("MSScriptControl.ScriptControl");
хВСХ.language     = "javascript";
Результат         = хВСХ.Eval("escape('"+Текст+"')");
Возврат Результат;
КонецФункции

Функция ПеревестиТекст (ИсходныйТекст, ЯзыкИсходный, ЯзыкПеревода, Ошибка = Ложь, КодОшибки = 0, ТекстОшибки = "") Экспорт
Если Не ЗначениеЗаполнено (ИсходныйТекст) Тогда
Возврат "";
КонецЕсли;
Результат = "";
УРЛСайта = "ajax.googleapis.com";

//    УРЛ = "https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=<%СЛОВО%>&langpair=<%ЯЗЫКИСТОЧНИК%>|<%ЯЗЫКПЕРЕВОДА%>";
УРЛ = "/ajax/services/language/translate?v=1.0&q=<%СЛОВО%>&langpair=<%ЯЗЫКИСТОЧНИК%>|<%ЯЗЫКПЕРЕВОДА%>";
ТекИсходныйТекст = ТекстДляУРЛ (ИсходныйТекст);
УРЛ = СтрЗаменить (УРЛ, "<%СЛОВО%>", ТекИсходныйТекст);
УРЛ = СтрЗаменить (УРЛ, "<%ЯЗЫКИСТОЧНИК%>", ЯзыкИсходный);
УРЛ = СтрЗаменить (УРЛ, "<%ЯЗЫКПЕРЕВОДА%>", ЯзыкПеревода);

Коннект              = Новый HTTPСоединение(УРЛСайта);
ЧтениеТекста         = Новый ТекстовыйДокумент;

СтруктураПараметров = Новый Структура;

ИмяВременногоФайла=ПолучитьИмяВременногоФайла("txt");
ФлагОшибкиВеб = Ложь;
КоличествоПопыток = 3;
СчПопыток = 1;
Пока Истина Цикл
Попытка
Коннект.Получить(УРЛ,ИмяВременногоФайла);
Прервать;
Исключение
Если СчПопыток >= КоличествоПопыток Тогда
ФлагОшибкиВеб = Истина;
Прервать;
Иначе
СчПопыток = СчПопыток + 1;
КонецЕсли;
КонецПопытки;
КонецЦикла;

Если Не ФлагОшибкиВеб Тогда
ЧтениеТекста.Прочитать(ИмяВременногоФайла, КодировкаТекста.UTF8);
СтрокаОтвета = ЧтениеТекста.ПолучитьТекст();
ТекстПеревод = ПреобразоватьСтрокуОтветаПереводчика (СтрокаОтвета);
Результат = ТекстПеревод;
Иначе
Ошибка             = Истина;
КодОшибки         = 1;
ТекстОшибки     = "Время ожидания ответа истекло";
КонецЕсли;
Возврат Результат;
КонецФункции

// вызов

Сообщить (ПеревестиТекст ("слово", "ru", "en"));

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *