Конец эры гугл-перевода в 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.ТекстовоеСодержимое;
		КонецЕсли;
	КонецЦикла;
    
    Возврат СтрокаПереведенная;
КонецФункции



image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

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