gifts2017

Переводчик Google для 1С 8.1

Опубликовал Николай Гусев (GusevNA) в раздел Программирование - Практика программирования

Перевод слов и фраз на другие языки Google Переводчиком (GoogleTranslate API). Без ВК. Сейчас работает без ключа API.

 

Код:

 

Функция ПреобразоватьСтрокуОтветаПереводчика (Строка, Ошибка=Ложь, КодОшибки=0, СтрокаОшибки = "") Экспорт
    ТекСтрока     = Строка;
    ТекСтрока     = СтрЗаменить (ТекСтрока, "{""responseData"": {","");
    ТекСтрока     = Лев (ТекСтрока, СтрДлина (ТекСтрока)-1);
    ТекСтроки     = СтрЗаменить (ТекСтрока, ",", Символы.ПС);
    ТекПеревод     = СтрПолучитьСтроку (ТекСтроки, 1);
    ТекПеревод     = СтрЗаменить (ТекПеревод, """translatedText"":""", "");
    ТекПеревод     = Лев (ТекПеревод, СтрДлина (ТекПеревод)-2);
    Возврат ТекПеревод;
КонецФункции

Функция ТекстДляУРЛ (Текст) Экспорт
    хВСХ             = Новый COMОбъект ("MSScriptControl.ScriptControl");
    хВСХ.language     = "javascript";
    Результат         = хВСХ.Eval("escape('"+Текст+"')");
    Возврат Результат;
КонецФункции

Функция ПеревестиТекст (ИсходныйТекст, ЯзыкИсходный, ЯзыкПеревода, Ошибка = Ложь, КодОшибки = 0, ТекстОшибки = "") Экспорт
    Если Не ЗначениеЗаполнено (ИсходныйТекст) Тогда
        Возврат "";
    КонецЕсли;
    Результат = "";
    УРЛСайта = "ajax.googleapis.com";

//    УРЛ = "https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=<%СЛОВО%>&langpair=<%ЯЗЫКИСТОЧНИК%>|<%ЯЗЫКПЕРЕВОДА%>";
    УРЛ = "/ajax/services/language/translate?v=1.0&q=<%СЛОВО%>&langpair=<%ЯЗЫКИСТОЧНИК%>|<%ЯЗЫКПЕРЕВОДА%>";
    ТекИсходныйТекст = ТекстДляУРЛ (ИсходныйТекст);
    УРЛ = СтрЗаменить (УРЛ, "<%СЛОВО%>", ТекИсходныйТекст);
    УРЛ = СтрЗаменить (УРЛ, "<%ЯЗЫКИСТОЧНИК%>", ЯзыкИсходный);
    УРЛ = СтрЗаменить (УРЛ, "<%ЯЗЫКПЕРЕВОДА%>", ЯзыкПеревода);

    Коннект              = Новый HTTPСоединение(УРЛСайта);
    ЧтениеТекста         = Новый ТекстовыйДокумент;

    СтруктураПараметров = Новый Структура;

    ИмяВременногоФайла=ПолучитьИмяВременногоФайла("txt");
    ФлагОшибкиВеб = Ложь;
    КоличествоПопыток = 3;
    СчПопыток = 1;
    Пока Истина Цикл
        Попытка
            Коннект.Получить(УРЛ,ИмяВременногоФайла);
            Прервать;
        Исключение
            Если СчПопыток >= КоличествоПопыток Тогда
                ФлагОшибкиВеб = Истина;
                Прервать;
            Иначе
                СчПопыток = СчПопыток + 1;
            КонецЕсли;
        КонецПопытки;
    КонецЦикла;

    Если Не ФлагОшибкиВеб Тогда
        ЧтениеТекста.Прочитать(ИмяВременногоФайла, КодировкаТекста.UTF8);
        СтрокаОтвета = ЧтениеТекста.ПолучитьТекст();
        ТекстПеревод = ПреобразоватьСтрокуОтветаПереводчика (СтрокаОтвета);
        Результат = ТекстПеревод;
    Иначе
        Ошибка             = Истина;
        КодОшибки         = 1;
        ТекстОшибки     = "Время ожидания ответа истекло";
    КонецЕсли;
    Возврат Результат;
КонецФункции

// вызов

 Сообщить (ПеревестиТекст ("слово", "ru", "en"));

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ийон Тихий (cool.vlad4) 01.08.11 13:39
если вы публикуетесь, как мне кажется, лучше не писать на коленке (просто сотрите эту фразу) и оформите хорошо и будет вам счастье и будут вам плюсы ;) ....
2. Алексей Константинов (alexk-is) 01.08.11 16:59
4. Ярослав Радкевич (WKBAPKA) 01.08.11 23:52
вот сдеся было уже
http://infostart.ru/public/83563/

ПЫЩЬ ПЫЩЬ ололо я водитель НЛО :)
5. Serj (Serj1C) 02.08.11 07:46
проверил, код рабочий, буду первым плюсом
6. Lara.Builova 02.08.11 08:08
Есть прекрасный онлайн переводчик, очень удобный: лежит тут
Прикрепленные файлы:
7. Ийон Тихий (cool.vlad4) 02.08.11 10:10
(4) ничего такого не было, там только украинский, здесь без гугль апи, для тех кто разбирается в вебе ,в принципе ничего особенного, ...для тех кто не очень - к концу года гугль обещает закрыть доступ к апи...
8. Ярослав Радкевич (WKBAPKA) 02.08.11 10:20
2(7): не совсем понятно, что значит без гугль апи? а кто тогда переводит?
9. Ийон Тихий (cool.vlad4) 02.08.11 10:28
(8) ошибочка, без ключа API....а как сделать совсем без апи, да просто запрос посылать вида http://translate.google.ru/translate_a/t?client=x&text={TEXT}&sl={LANG_FROM}&tl={LANG_TO}
10. Николай Гусев (GusevNA) 02.08.11 18:04
cool.vlad4 пишет:

(4) ничего такого не было, там только украинский, здесь без гугль апи, для тех кто разбирается в вебе ,в принципе ничего особенного, ...для тех кто не очень - к концу года гугль обещает закрыть доступ к апи...


Судя по новостям ( http://www.linux.org.ru/forum/talks/6347223 ) , Translate API будет платным. А может, они еще что придумают. Поживем - увидим. Если что - потом перепишу :D
11. Ийон Тихий (cool.vlad4) 02.08.11 18:06
(10)да я тоже слышал, что будет платным...тогда придется использовать запрос, который я привел в 9
12. Макс Зеленский (mzelensky) 02.11.11 15:03
А можно таким образом переводить не "слово", а текст целиком ??? Т.к. разбивать предложение на слова и переводить каждое по отдельности неправильно...
13. Макс Зеленский (mzelensky) 02.11.11 15:04
14. igor sarafanov (ms200999) 02.11.11 15:46
15. Макас (makas) 23.04.13 14:23
Я не знаю зачем такая штука необходима, но плюсую за идею :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа