Компонента перевода средствами Google Translate

Данная компонента включает возможность перевода из одного языкового направления на другой. Перевод осуществляется посредством экранированного (подобно htmlspecialchars) HTTP-запроса на сервис translate.google.com и возврата уже переведенного значения.

В отличие от других сервисов перевода, таких как Babel Fish и AOL, которые используют технологию SYSTRAN (английский), Google, как и Translate.ru использует собственное программное обеспечение. Видимо, используется самообучаемый алгоритм статистического машинного перевода.

Список языков не ограничен компонентой.

Пример использования библиотеки (1Сv7):


Рез = ЗагрузитьВнешнююКомпоненту(«HTTPTrans.dll»);                    


Попытка
     Состояние(«Загрузка внешней компоненты»);
     Переводчик = СоздатьОбъект(«Addin.HTTPTranslator»);
Исключение

     Возврат;

КонецПопытки;


Переводчик.ПроксиАдрес         = "192.168.1.1";
Переводчик.ПроксиПорт          = 8080;
Переводчик.ПроксиИмя           = "myusername";
Переводчик.ПроксиПароль        = "mypassword";
Переводчик.НаправлениеПеревода = "ru-" + РеквизитПеревестиНаЯзык;
НовоеНаименование              = Переводчик.Перевести(Наименование);


Компонента работает и в 1Cv8


Если будут пожелания по развитию компоненты — буду рад помочь и оптимизировать, включая Ваши пожелания. 🙂

16 Comments

  1. vitekryazan

    🙂

    Reply
  2. Noy

    Тут же инфостарте есть обработка для перевода без ВК.

    Автор Александр PRADA Максюк

    Примерно так:

    ВинХТТП = СоздатьОбъект(«WinHttp.WinHttpRequest.5.1»);
    СтрЗапроса = «http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=» + ТекстДляПеревода + «&langpair=ru|uk»;
    ВинХТТП.Open(«GET»,СтрЗапроса,0);
    ВинХТТП.Send();
    РезультатПеревода = ВинХТТП.ResponseText();
    
    
    Reply
  3. SkyManPHP

    А как по поводу подключения через прокси аутентификации на нем, если он отличается от системного?

    Reply
  4. cool.vlad4

    (3) http://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx — setProxy…

    а также можно использовать и системное значение (его можно менять через netsh, либо реестр, либо через proxycfg) …

    Reply
  5. cool.vlad4

    ВинХТТП.SetProxy(0,»адрес:порт»);

    ВинХТТП.SetCredentials(«ProxyLogin»,»ProxyPassword»,1);

    Reply
  6. SkyManPHP

    Супер, спасибо!

    Reply
  7. v_id

    У одно меня перестало работать?

    12.07.2011 09:00:16 — Plain response is: google.language.callbacks.id100(’22’, null, 403, ‘Suspected Terms of Service Abuse.
    Please see http://code.google.com/apis/errors‘, 200)
    
    Reply
  8. SkyManPHP

    (7) v_id, Вы работаете не через прокси, да?

    Reply
  9. SkyManPHP

    Мда.. Оказывается, Google закрыл лавочку. 🙁

    Цитирую: » Google Translate API v2 is now available as a paid service only, and the number of requests your application can make per day is limited. For website translations, we encourage you to use the Google Website Translator gadget.»

    То есть варианты — использовать уже платное АПИ версии 2, либо пробовать посылать запросы на сайт как «Google Website Translator gadget». Нужно будет поэкспериментировать.

    Либо все-таки попробовать использовать АПИ версии 1, но и там они сообщают, что оно является устаревшим с 1 декабря 2011 года:

    «Google Translate API v1 was officially deprecated on May 26, 2011; it was shut off completely on December 1, 2011. For text translations, you can use the Google Translate API v2, which is now available as a paid service. For website translations, we encourage you to use the Google Website Translator gadget.»

    Reply
  10. v_id

    (8) работал через прокси, причем сносно переводил даже фразы типа названия должностей

    Reply
  11. v_id

    Решение от cool.vlad4 тоже не взлетело, увы

    Reply
  12. v_id

    (9) в сзязи с этим нельзя ли переделать компоненту?

    Очень хочется бесплатного перевода.

    Reply
  13. SkyManPHP

    Я переделал компоненту, но для этого нужно указывать API Key. Это решение подходит для тех, кто готов платить. Мы в компании переводим с помощью этой компоненты. За прошлый месяц — 0.05 Mb символов было переведено и это стоило $1. В это месяце будет намного больше символов. Разве 10-20 долларов в год — это очень много?

    Все же, могу создать компоненту и на основании PHP API от Yandex, если очень надо. 🙂

    Reply
  14. v_id

    (13)

    Все же, могу создать компоненту и на основании PHP API от Yandex, если очень надо. 🙂

    Буду премного благодарен, да и не я один.

    Reply
  15. SkyManPHP

    Хорошо, тогда сделаю и сюда сброшу ссылку.

    Reply
  16. non-y

    🙂 а если нет прокси-сервера и просто опустить эти 4 строки в параметрах…(7.7) то должен вернуть перевод?

    Reply

Leave a Comment

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