Конец эры гугл-перевода в 1С
Мой клиент использовал гугл-переводчик для перевода наименований товаров.
Не очень активно, поэтому вписывался в бесплатные лимиты.
И вот недавно Google добавил каптчу и поставил крест на этих переводах:

Странно, что он раньше этого не делал. Видимо, режут косты.
Придется, думаю, использовать ИИ для переводов. Дешево и сердито. Думаю, даже наши отечественные ИИ справятся.
Оставлю код перевода, как памятник ушедшему функционалу:
Функция ПеревестиТекст(ИсходнаяСтрокаДляПеревода, Язык, СтрокВПачке = 5) Экспорт Т = Новый ТекстовыйДокумент(); Т.УстановитьТекст(ИсходнаяСтрокаДляПеревода); //По 5 строк ТекТекст = ""; РезТекст = ""; Для Инд = 1 По Т.КоличествоСтрок() Цикл ТекТекст = ТекТекст + ?(ТекТекст = "", "", Символы.ПС) + Т.ПолучитьСтроку(Инд); Если Инд % СтрокВПачке = 0 Тогда РезТекст = РезТекст + ?(РезТекст = "", "", Символы.ПС) + ПеревестиТекстСлужебная(ТекТекст, Язык); ТекТекст = ""; КонецЕсли; КонецЦикла; Если ТекТекст <> "" Тогда РезТекст = РезТекст + ?(РезТекст = "", "", Символы.ПС) + ПеревестиТекстСлужебная(ТекТекст, Язык); КонецЕсли; Возврат РезТекст; КонецФункции Функция ПеревестиТекстСлужебная(ИсходнаяСтрокаДляПеревода, Язык) Экспорт СтрокаДляПеревода = КодироватьСтроку(ИсходнаяСтрокаДляПеревода, СпособКодированияСтроки.КодировкаURL); SSL = Новый ЗащищенноеСоединениеOpenSSL(); Таймаут = 30; Соединение = Новый HTTPСоединение("translate.google.com",,,,,Таймаут,SSL); СтрокаДляПереводаЗакодированная = КодироватьСтроку(СтрокаДляПеревода, СпособКодированияСтроки.URLВКодировкеURL); ЗапросHTTP = Новый HTTPЗапрос( "/m?sl=ru&tl=" + Язык + "&hl=ru&q=" + СтрокаДляПереводаЗакодированная); ОтветHTTP = Соединение.ВызватьHTTPМетод("GET", ЗапросHTTP); СтрокаОтвета = ОтветHTTP.ПолучитьТелоКакСтроку(); Если ОтветHTTP.КодСостояния <> 200 Тогда Сообщить("Ошибка перевода, код состояния: " + ОтветHTTP.КодСостояния + " Текст ошибки: " + СтрокаОтвета); ВызватьИсключение "Ошибка перевода"; КонецЕсли; ЧтениеHTML = Новый ЧтениеHTML; ЧтениеHTML.УстановитьСтроку(СтрокаОтвета); Построитель = Новый ПостроительDOM; ДокHTML = Построитель.Прочитать(ЧтениеHTML); ЭлементыДокHTML = ДокHTML.ПолучитьЭлементыПоИмени("div"); СтрокаПереведенная = Неопределено; Для Каждого ЭлементДокHTML ИЗ ЭлементыДокHTML Цикл Если ЭлементДокHTML.ИмяКласса = "result-container" Тогда СтрокаПереведенная = ЭлементДокHTML.ТекстовоеСодержимое; КонецЕсли; КонецЦикла; Возврат СтрокаПереведенная; КонецФункции




Свежие комментарии