Быстрый яндекс-переводчик для 1С. Работающий с помощью API

Быстрый переводчик для 1С. Работающий с помощью API. Преимущество — это отказоустойчивость и быстродействие. Без создания тхт-файлов, не теребя HTTP-соединение и POST (Используется XMLHttp).

Блуждая по просторам Инфостарта заметил публикацию //infostart.ru/public/88054/… Посмотрел на код и немного удивился подходу… Что и натолкнуло на мысль опубликовать данный пример работы с API для перевода. Воизбежания нареканий на плагиат =)))))) Взял АПИ-Яндекса 

Преимущество — это отказоустойчивость и быстродействие. Без создания тхт-файлов, не теребя HTTP-соединение.

Использую как всегда любимые функции

encodeURI (жаба)

XMLReader (XMLчтение 1с)

XMLHttp (GetCOMObject(«», «Microsoft.XMLHTTP»);)

 

API-key «вшит» в коде. Получить его можно на оф. сайте Яндекса. И ручками заменить, при потере работоспособности.
 

24 Comments

  1. makas

    Я незнаю зачем и такая штука необходима, но плюс за идею 🙂

    Reply
  2. Alexander.Shvets

    Есть клиент. Занимается сетью магазинов «купи-продай». Товары импортные… При создании номенклатур менеджеры устали лезть в гугл и переводить названия. В решении код является частью обработчика элемента формы. Для демонстрации привел к виду обработки.

    Reply
  3. sikuda

    Фраза:

    не теребя HTTP-соединение и POST (Используется XMLHttp). COM+!!!

    Не понятна в современных условиях 2013. Если 1С, то лучше использовать ее нативные компоненты…

    Reply
  4. Alexander.Shvets

    Есть один минус — использование ВК.

    Зачастую проблемы начинаются при использовании ВК на сервере в управляемом приложении…

    Если использовать внешние компоненты — тогда почему же не использовать локальный переводчик?

    Посему — считаю что решение оптимальное и универсальное.

    Reply
  5. GusevNA

    (3) sikuda, HTTP-соединение не всегда корректно работает с HTTPS-запросами. Согласен с автором: лучше использовать XMLHttp, тем более, что это стандартный компонент Windows.

    Reply
  6. echo77

    (5) А под Linux как будет работать?

    Reply
  7. GusevNA

    (6) echo77, интересный вопрос. Можно потестировать HTTP-соединение на HTTPS-запросах под Linux. Может, будет стабильно работать. Тогда можно проверять версию ОС и под Windows использовать XMLHttp, а под Linux — HTTP-соединение.

    Reply
  8. ilyav

    А у гугла есть подобный api?

    Reply
  9. GusevNA

    У Гугла API перевода платный. Бесплатный прикрыли. Раньше я использовал свою обработку http://infostart.ru/public/88054/. Если купить доступ у гугла, обработку несложно переделать под платный API.

    Reply
  10. Alexander.Shvets

    (9) GusevNA,

    api используется халявный. Правда на яндексе… Но не вижу сильно большой разницы именно в переводчике… по одному слову можно но не более… Раз на раз… На мой взгляд

    (6) echo77,

    В общем на никсах будет работать… Только вот тогда нужно будет юзать как то так…

    через жабоскрипт

    var req = new XMLHttpRequest();

    так как это объект, встроенный в JavaScript…

    В функцию передать строку УРЛ… Вуаля — кроссплатформенность…

    Но для винды не предусматривал лишних телодвижений…

    Reply
  11. GusevNA

    (10) Гугл больше языков поддерживал, а так большой разницы я не заметил. Хотя Яндексу можно несколько фраз одновременно передавать в запросе, а в закрывшемся API Гугла, по-моему, нельзя было — только одну.

    Reply
  12. Alexander.Shvets

    (11) GusevNA,

    Точно не помню на счет Гугла, поверю на слово =)

    Но мне кажется умел, дело в том, что всю фразу надо было приобразовывать в URI перед передачей и пихать в строку хттп-запроса. без преобразования можно было передать одно слово, и то без специальных знаков…

    Яндекс умеет переводить несколько слов… Но смыслового перевода от него не дождешься…

    Передать можно целое предложение, но переведет он их все равно по слову, без учета пунктуации и логики. По этому и сказал, что разницы не много.

    Reply
  13. Поручик

    (12) Вот именно поэтому я использую переводчик гугля. Там хоть фразы в обе стороны получаются более-менее осмысленные, а иногда и вовсе литературные.

    Reply
  14. MrUnnamed

    Уже публиковал похожее:

    http://infostart.ru/public/162849/

    Reply
  15. Alexander.Shvets

    (14) MrUnnamed,

    Совсем не то… В описании говорится, что упор делал на оптимизацию… Так как похожих вещей прудь-пруди…

    Вот, например, в вашей публикации Функции ЗакодироватьURL, ПеревестиВСистему, UnicodeToUtf8 довольно спицефические, как на мой взгляд… Лишние телодвижения по каждому символу…

    Плюс никакого чтения XML и обработок ошибок…

    Если серв передумает отвечать — 1С упадет на крит. ошибку…

    Скорее всего вы даже не открывали исходный код, перед тем как прокомментировать сию публикацию…

    С Уважением…

    Reply
  16. Boudybuilder

    Я вот с работой АРІ новичок.

    Только только учусь.

    Написал кожд , но что то на Яндекс Диске не авторизируется. Где у меня ошибка?

    ЯДиск = Новый HTTPСоединение («webdav.yandex.ru»,»443″,,,,Истина);

    ИмяФайла = ПолучитьИмяВременногоФайла();

    ЯДиск.Получить(«PROPFIND / HTTP/1.1

    |Host: webdav.yandex.ru

    |Accept: */*

    |Depth: 0

    |Authorization: Basic «+мЛогин+» : «+мПароль,ИмяФайла);

    Вот не пойму , правильно я делаю или нет?

    Reply
  17. Alexander.Shvets

    Про авторизацию почитай здесь.

    Если пытаешься авторизироваться через «Basic» То скорее всего забыл логин и пароль перевести в соответствующую кодировку (Base64). Читать здесь

    Reply
  18. Kserken

    Работает действительно быстро. Плюс автору за реализацию.

    Reply
  19. FireFox_Manager

    У меня почему-то вот такую ошибку выдает (в УТ 11):

    {Обработка.ЯндексПереводчик.Форма.Форма.Форма(43)}: Ошибка при вызове метода контекста (Eval)
    Сообщение = ScrCtrl.eval(«var uri='»+Строка+»‘; encodeURI(uri);») ;
    по причине:
    Произошла исключительная ситуация (Ошибка компиляции Microsoft JScript): Предполагается наличие ‘;’
    Reply
  20. Alexander.Shvets

    (19) yinfo,

    Предполагаю ОС старая?

    У ХРюши есть известные проблемы с Microsoft JSc. На новых ОС (7,8) должно работать с предустановленными драйверами.

    Reply
  21. ben_art

    Подскажите пожалуйста , можно ли подключить автоопределение языка ?

    Reply
  22. Alexander.Shvets

    (21) ben_art, На момент создания обработки — апи не предоставляла такой возможности. Сейчас данная возможность есть у Гугла Google Language API. Посмотрите здесь

    http://abrdev.com/?p=286

    Reply
  23. pjv

    (20) На УПП обработка не работает. Файл не открывается.

    Reply
  24. Alexander.Shvets

    (23)

    а УПП обработка не работает. Файл не открыв

    Возможен ряд причин:

    ошибка происходит до открытия формы — скорее всего, необходима конвертация обработки (открыть ее в конфигураторе один раз)

    возникает ошибка при попытке отправить гет-запрос (кнопка перевести) — надо смотреть на версию XMLHttp или доступ к самому ресурсу (яндекс).

    Да и текст ошибки с вероятностью 99% объяснит, что не так.

    Reply

Leave a Comment

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