gifts2017

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

Опубликовал Sergey Matrunchik (SkyManPHP) в раздел Программирование - Внешние компоненты

Данная компонента включает возможность перевода из одного языкового направления на другой. Перевод осуществляется посредством экранированного (подобно 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


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

Скачать файлы

Наименование Файл Версия Размер
Файл-библиотека 44
.dll 72,00Kb
23.11.11
44
.dll 72,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Виктор Гавриков (vitekryazan) 23.11.11 19:54
2. Алексей Плутенко (Noy) 24.11.11 13:06
Тут же инфостарте есть обработка для перевода без ВК.
Автор Александр 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();

...Показать Скрыть
kuznecoff@gmail.com; +1 Ответить
3. Sergey Matrunchik (SkyManPHP) 24.11.11 13:51
А как по поводу подключения через прокси аутентификации на нем, если он отличается от системного?
4. Ийон Тихий (cool.vlad4) 24.11.11 14:13
(3) http://msdn.microsoft.com/en-us/library/windows/desktop/aa384059(v=vs.85).aspx - setProxy...
а также можно использовать и системное значение (его можно менять через netsh, либо реестр, либо через proxycfg) ...
5. Ийон Тихий (cool.vlad4) 24.11.11 14:15
ВинХТТП.SetProxy(0,"адрес:порт");
ВинХТТП.SetCredentials("ProxyLogin","ProxyPassword",1);
6. Sergey Matrunchik (SkyManPHP) 24.11.11 14:33
7. v_id (v_id) 07.12.11 09:03
У одно меня перестало работать?
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)
8. Sergey Matrunchik (SkyManPHP) 07.12.11 10:52
(7) v_id, Вы работаете не через прокси, да?
9. Sergey Matrunchik (SkyManPHP) 07.12.11 11:23
Мда.. Оказывается, 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."
10. v_id (v_id) 09.12.11 16:38
(8) SkyManPHP, работал через прокси, причем сносно переводил даже фразы типа названия должностей
11. v_id (v_id) 09.12.11 16:40
Решение от cool.vlad4 тоже не взлетело, увы
12. v_id (v_id) 21.02.12 15:51
(9) SkyManPHP, в сзязи с этим нельзя ли переделать компоненту?
Очень хочется бесплатного перевода.
SkyManPHP; +1 Ответить
13. Sergey Matrunchik (SkyManPHP) 21.02.12 16:56
Я переделал компоненту, но для этого нужно указывать API Key. Это решение подходит для тех, кто готов платить. Мы в компании переводим с помощью этой компоненты. За прошлый месяц - 0.05 Mb символов было переведено и это стоило $1. В это месяце будет намного больше символов. Разве 10-20 долларов в год - это очень много?

Все же, могу создать компоненту и на основании PHP API от Yandex, если очень надо. :)
14. v_id (v_id) 21.02.12 17:02
(13) SkyManPHP,
Все же, могу создать компоненту и на основании PHP API от Yandex, если очень надо. :)


Буду премного благодарен, да и не я один.
15. Sergey Matrunchik (SkyManPHP) 21.02.12 17:52
Хорошо, тогда сделаю и сюда сброшу ссылку.
16. Некто Какой-то (non-y) 25.01.13 15:18
:) а если нет прокси-сервера и просто опустить эти 4 строки в параметрах...(7.7) то должен вернуть перевод?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа