Блуждая по просторам Инфостарта заметил публикацию //infostart.ru/public/88054/… Посмотрел на код и немного удивился подходу… Что и натолкнуло на мысль опубликовать данный пример работы с API для перевода. Воизбежания нареканий на плагиат =)))))) Взял АПИ-Яндекса
Преимущество — это отказоустойчивость и быстродействие. Без создания тхт-файлов, не теребя HTTP-соединение.
Использую как всегда любимые функции
encodeURI (жаба)
XMLReader (XMLчтение 1с)
XMLHttp (GetCOMObject(«», «Microsoft.XMLHTTP»);)
API-key «вшит» в коде. Получить его можно на оф. сайте Яндекса. И ручками заменить, при потере работоспособности.
Я незнаю зачем и такая штука необходима, но плюс за идею 🙂
Есть клиент. Занимается сетью магазинов «купи-продай». Товары импортные… При создании номенклатур менеджеры устали лезть в гугл и переводить названия. В решении код является частью обработчика элемента формы. Для демонстрации привел к виду обработки.
Фраза:
не теребя HTTP-соединение и POST (Используется XMLHttp). COM+!!!
Не понятна в современных условиях 2013. Если 1С, то лучше использовать ее нативные компоненты…
Есть один минус — использование ВК.
Зачастую проблемы начинаются при использовании ВК на сервере в управляемом приложении…
Если использовать внешние компоненты — тогда почему же не использовать локальный переводчик?
Посему — считаю что решение оптимальное и универсальное.
(3) sikuda, HTTP-соединение не всегда корректно работает с HTTPS-запросами. Согласен с автором: лучше использовать XMLHttp, тем более, что это стандартный компонент Windows.
(5) А под Linux как будет работать?
(6) echo77, интересный вопрос. Можно потестировать HTTP-соединение на HTTPS-запросах под Linux. Может, будет стабильно работать. Тогда можно проверять версию ОС и под Windows использовать XMLHttp, а под Linux — HTTP-соединение.
А у гугла есть подобный api?
У Гугла API перевода платный. Бесплатный прикрыли. Раньше я использовал свою обработкуhttp://infostart.ru/public/88054/ . Если купить доступ у гугла, обработку несложно переделать под платный API.
(9) GusevNA,
api используется халявный. Правда на яндексе… Но не вижу сильно большой разницы именно в переводчике… по одному слову можно но не более… Раз на раз… На мой взгляд
(6) echo77,
В общем на никсах будет работать… Только вот тогда нужно будет юзать как то так…
через жабоскрипт
var req = new XMLHttpRequest();
так как это объект, встроенный в JavaScript…
В функцию передать строку УРЛ… Вуаля — кроссплатформенность…
Но для винды не предусматривал лишних телодвижений…
(10) Гугл больше языков поддерживал, а так большой разницы я не заметил. Хотя Яндексу можно несколько фраз одновременно передавать в запросе, а в закрывшемся API Гугла, по-моему, нельзя было — только одну.
(11) GusevNA,
Точно не помню на счет Гугла, поверю на слово =)
Но мне кажется умел, дело в том, что всю фразу надо было приобразовывать в URI перед передачей и пихать в строку хттп-запроса. без преобразования можно было передать одно слово, и то без специальных знаков…
Яндекс умеет переводить несколько слов… Но смыслового перевода от него не дождешься…
Передать можно целое предложение, но переведет он их все равно по слову, без учета пунктуации и логики. По этому и сказал, что разницы не много.
(12) Вот именно поэтому я использую переводчик гугля. Там хоть фразы в обе стороны получаются более-менее осмысленные, а иногда и вовсе литературные.
Уже публиковал похожее:
http://infostart.ru/public/162849/
(14) MrUnnamed,
Совсем не то… В описании говорится, что упор делал на оптимизацию… Так как похожих вещей прудь-пруди…
Вот, например, в вашей публикации Функции ЗакодироватьURL, ПеревестиВСистему, UnicodeToUtf8 довольно спицефические, как на мой взгляд… Лишние телодвижения по каждому символу…
Плюс никакого чтения XML и обработок ошибок…
Если серв передумает отвечать — 1С упадет на крит. ошибку…
Скорее всего вы даже не открывали исходный код, перед тем как прокомментировать сию публикацию…
С Уважением…
Я вот с работой АРІ новичок.
Только только учусь.
Написал кожд , но что то на Яндекс Диске не авторизируется. Где у меня ошибка?
ЯДиск = Новый HTTPСоединение («webdav.yandex.ru»,»443″,,,,Истина);
ИмяФайла = ПолучитьИмяВременногоФайла();
ЯДиск.Получить(«PROPFIND / HTTP/1.1
|Host: webdav.yandex.ru
|Accept: */*
|Depth: 0
|Authorization: Basic «+мЛогин+» : «+мПароль,ИмяФайла);
Вот не пойму , правильно я делаю или нет?
Про авторизацию почитайздесь .
Если пытаешься авторизироваться через «Basic» То скорее всего забыл логин и пароль перевести в соответствующую кодировку (Base64). Читатьздесь
Работает действительно быстро. Плюс автору за реализацию.
У меня почему-то вот такую ошибку выдает (в УТ 11):
(19) yinfo,
Предполагаю ОС старая?
У ХРюши есть известные проблемы с Microsoft JSc. На новых ОС (7,8) должно работать с предустановленными драйверами.
Подскажите пожалуйста , можно ли подключить автоопределение языка ?
(21) ben_art, На момент создания обработки — апи не предоставляла такой возможности. Сейчас данная возможность есть у Гугла Google Language API. Посмотрите здесь
http://abrdev.com/?p=286
(20) На УПП обработка не работает. Файл не открывается.
(23)
Возможен ряд причин:
ошибка происходит до открытия формы — скорее всего, необходима конвертация обработки (открыть ее в конфигураторе один раз)
возникает ошибка при попытке отправить гет-запрос (кнопка перевести) — надо смотреть на версию XMLHttp или доступ к самому ресурсу (яндекс).
Да и текст ошибки с вероятностью 99% объяснит, что не так.