Перевод средствами Google translate

Пример обработки на УФ для 1С8.2 для перевода текста с использованием Google translate

На сервер Google отправляется команда вида:

http://translate.google.ru/translate_a/t?client=x&text={textToTranslate}&sl={langFrom}&tl={langTo}

{textToTranslate} — текст исходный;

{langFrom} — язык исходного текста;

{langTo} — язык, в который будет выполнен перевод;

Ответ приходит в виде строки JSON. Пример ответа:

{«sentences»:[{«trans»:»Infostart — professional community»,»orig»:»Инфостарт — профессиональное сообщество»,»translit»:»»,»src_translit»:»Infostart — professionalE7;noe soobshchestvo»}],»src»:»ru»,»server_time»:54}

Для распарсивания JSON используются методы из публикации //infostart.ru/public/61194/

20 Comments

  1. khaoos

    Задача вряд ли возникнет, но за пример взаимодействия спасибо, будет куда подсмотреть в случае надобности. Плюс

    Reply
  2. Огонек

    (1) khaoos, мне понадобилось для формирования отчета в транслите.

    Reply
  3. SamJack

    Полезная штука

    Reply
  4. dour-dead

    Спасибо!

    Reply
  5. darklynxfp

    Жаль но переводит только до первый точки

    Reply
  6. Огонек

    Обновил файл обработки.

    (5) darklynxfp, спасибо за комментарий.

    Reply
  7. fuxic

    пригодилось. стояло маленьким пунктом в виде подводного камня в планах, но вы сэкономили время

    Reply
  8. ardn

    Спасибо

    Reply
  9. Amel2010

    А под 7.7 нет обработки?

    Ну или, хотя бы текст обработки приведите — думаю, там не много строчек кода.

    А то у меня 8-ки нет.

    Reply
  10. Amel2010

    Уже поставил плагин под Far.

    Код нашел.

    Если кому нужно, в файле


    Это я по ошибке код самой обработки JSON привел.

    Reply
  11. Amel2010

    Это все еще работает?

    Или в гугле уже «прикрыли лавочку»?

    Reply
  12. kolia

    Спасибо. Интересная вещь

    Reply
  13. xten

    Можно на обычные формы для 8.2 , было бы очень здорово!!!!

    Reply
  14. andrey314

    Отличная вещь. Спасибо. Но есть одна проблемка: на одной машине с Win2008 Server перевод получаем в таком роде «????????? — ???????????????? ?????????? ?? ????????????? ?????????????? ????? ? ??????????.» Я так понимаю проблема с кодировкой?

    Reply
  15. jigourt

    если не ошибаюсь, гугл закрыл апи переводчика. у меня где-то есть аналогичная вещь на яндексе

    Reply
  16. andrey314

    Работает еще гугл пока.

    Reply
  17. slavikss

    (14) andrey314, у меня так бывает когда на сервере в терминале работаю и у клиента один язык включен а на сервере другой.

    Reply
  18. new_user

    как лечить?

    Reply
  19. Огонек

    Похоже, закрыли бесплатную возможность пользоваться API.

    Теперь доступно новое платное API https://cloud.google.com/translate/docs/reference/translate#http-request

    Reply
  20. EvgeTrofi
    //Функция получения перевода текста с помощью сервиса Yandex Translate
    //https://translate.yandex.net/api/v1.5/tr/translate?key=trnsl.1.1.20181028T164555Z.a9607b69d6eb723d.cfd831d41c39bddeccaf644fed8916778f1ef971&text=people&lang=en­-ru
    //{key} — ключ со страницы https://translate.yandex.com/developers/keys;
    //{text} — исходный текст для перевода;
    //{lang} — язык исходного текста и язык, в который будет выполнен перевод;
    //Ответ приходит в виде строки XML. Пример ответа:
    //<?xml version=»1.0″ encoding=»utf-8″?>
    //<Translation code=»200″ lang=»en-ru»><text>люди</text></Translation>
    &НаСервере
    Функция ПолучитьПеревод(Знач ИсходноеСлово, ЯзыкИсходногоТекста=»ru», ЯзыкДляПеревода=»en»)
    Ключ = «trnsl.1.1.20181028T164555Z.a9607b69d6eb723d.cfd831d41c39bddeccaf644fed8916778f1ef971»;
    
    Соединение = Новый HTTPСоединение(
    «translate.yandex.net», // сервер (хост)
    443, // порт, по умолчанию для http используется 80, для https 443
    , // пользователь для доступа к серверу (если он есть)
    , // пароль для доступа к серверу (если он есть)
    , // здесь указывается прокси, если он есть
    , // таймаут в секундах, 0 или пусто — не устанавливать
    Новый ЗащищенноеСоединениеOpenSSL(),  // защищенное соединение, если используется https
    Ложь
    );
    
    ИсходноеСлово = КодироватьСтроку(ИсходноеСлово,СпособКодированияСтроки.КодировкаURL);
    Запрос = Новый HTTPЗапрос(«/api/v1.5/tr/translate?key=»+Ключ+»1&text=»+ИсходноеСлово+»&lang=»+ЯзыкИсходногоТек­ста+»-«+ЯзыкДляПеревода);
    Результат = Соединение.Получить(Запрос);
    ТекстXML = Результат.ПолучитьТелоКакСтроку();
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.УстановитьСтроку(ТекстXML);
    ПостроительДОМ = Новый ПостроительDOM;
    ДокументДОМ = ПостроительДОМ.Прочитать(ЧтениеXML);
    ВеткаTranslation = ДокументДОМ.ДочерниеУзлы[0];
    
    Возврат ВеткаTranslation.ТекстовоеСодержимое;
    
    КонецФункции // ПолучитьПеревод()
    

    Показать

    Reply

Leave a Comment

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