Автор Тема: Использовние яндекс-переводчика  (Прочитано 384 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн saraconor [?]

  • Новичок
  • *
  • Сообщений: 318
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Приведите пожалуйста пример как можно допустим текст в буфере обмена перевести с английского на русский с помощью яндекс-переводчика.
Где-то на форумен найден такой пример:
Код: AutoIt [Выделить]
$YA_KEY = "trnsl.1.1.20190528T070436Z.9131472d27ee4856.e2068dd9818535b8b49b531d12abb1046769f236";http://api.yandex.ru/key/keyslist.xml
ConsoleWrite(YaTranslate("Hello, how are you?", "en")&@CRLF)
Func YaTranslate($text, $lang="ru")
    $url = "https://translate.yandex.net/api/v1.5/tr/translate?format=plain&key="&$YA_KEY&"&text="&$text&"&lang="&$lang
    $xml = BinaryToString(InetRead($url))
    If $xml == "" Then Return ""
    $arr = StringRegExp($xml, '(?i)<text>(.*?)</text>', 1)
    If UBound($arr) > 0 Then Return $arr[0]
    Return ""
EndFunc

Вроде работает, но что-то с кодировкой.
« Последнее редактирование: Май 28, 2019, 10:19:40 от saraconor »

Русское сообщество AutoIt

Использовние яндекс-переводчика
« Отправлен: Май 28, 2019, 10:11:33 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2740
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Re: Использовние яндекс-переводчика
« Ответ #1, Отправлен: Май 29, 2019, 07:17:47 »
Обязательно программно? QTranslate имеет возможность задать горячую клавишу на функцию перевода буфера обмена. А также можно задать горячую клавишу на функцию перевода выделенной строки со вставкой взамен выделенной. Сервис яндекса в нём есть (и куча других более продвинутых).

Оффлайн saraconor [?]

  • Новичок
  • *
  • Сообщений: 318

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Использовние яндекс-переводчика
« Ответ #2, Отправлен: Май 29, 2019, 09:30:19 »
Очень желательно программно.

Русское сообщество AutoIt

Re: Использовние яндекс-переводчика
« Ответ #2 Отправлен: Май 29, 2019, 09:30:19 »

Помечен как лучший ответ пользователем saraconor Отправлен Июнь 04, 2019, 09:55:25

Оффлайн idbehold [?]

  • Новичок
  • *
  • Сообщений: 37
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Использовние яндекс-переводчика
« Ответ #3, Отправлен: Июнь 03, 2019, 02:50:11 »

Ответ приходит в кодировке utf.
В BinaryToString нужно указать флаг $SB_UTF8 вторым параметром

Код: AutoIt [Выделить]
#include <StringConstants.au3>

$YA_KEY = "YOU_KEY";http://api.yandex.ru/key/keyslist.xml
ConsoleWrite(YaTranslate("Hello, how are you?", "ru")&@CRLF)
Func YaTranslate($text, $lang="ru")
    $url = "https://translate.yandex.net/api/v1.5/tr/translate?format=plain&key="&$YA_KEY&"&text="&$text&"&lang="&$lang
    $xml = BinaryToString(InetRead($url), $SB_UTF8)
    If $xml == "" Then Return ""
    $arr = StringRegExp($xml, '(?i)<text>(.*?)</text>', 1)
    If UBound($arr) > 0 Then Return $arr[0]
    Return ""
EndFunc
 


Оффлайн pvnn [?]

  • Осваивающий
  • **
  • Сообщений: 279
  • Репутация: 29
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Использовние яндекс-переводчика
« Ответ #4, Отправлен: Июнь 05, 2019, 09:16:47 »
А если нужно с русского на английский, то нужно текст предварительно перевести в UTF8.
И лучше указать полностью с какого на какой язык переводите: "en-ru" "ru-en"

Код: AutoIt [Выделить]
$YA_KEY = "YOU_KEY";http://api.yandex.ru/key/keyslist.xml
MsgBox(0,'',YaTranslate("Hello, how are you?", "en-ru"))
MsgBox(0,'',YaTranslate(_Encoding_ANSIToUTF8("Привет, как дела?"), "ru-en"))

Func YaTranslate($text, $lang="en-ru")
    $url = "https://translate.yandex.net/api/v1.5/tr/translate?format=plain&key="&$YA_KEY&"&text="&$text&"&lang="&$lang
    $xml = BinaryToString(InetRead($url),4 ) ; $SB_UTF8
    If $xml == "" Then Return ""
    $arr = StringRegExp($xml, '(?i)<text>(.*?)</text>', 1)
    If UBound($arr) > 0 Then Return $arr[0]
    Return ""
EndFunc

Func _Encoding_ANSIToUTF8($sString)
    Return BinaryToString(StringToBinary($sString, 4))
EndFunc
 


Русское сообщество AutoIt

Re: Использовние яндекс-переводчика
« Ответ #4 Отправлен: Июнь 05, 2019, 09:16:47 »

Оффлайн saraconor [?]

  • Новичок
  • *
  • Сообщений: 318

  • Автор темы
  • Репутация: 2
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Использовние яндекс-переводчика
« Ответ #5, Отправлен: Июнь 13, 2019, 12:00:05 »
а как вывести несколько вариантов перевода, если допустим одно слово "window" переводится?
(окно, окошко, стекло, иллюминатор, витрина, форточка) - как в таком виде вывести перевод?

Русское сообщество AutoIt

Re: Использовние яндекс-переводчика
« Ответ #5 Отправлен: Июнь 13, 2019, 12:00:05 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
2302 Просмотров
Последний ответ Февраль 12, 2015, 01:56:21
от Vovsla
27 Ответов
22258 Просмотров
Последний ответ Май 02, 2018, 22:58:28
от tech-gs
0 Ответов
1564 Просмотров
Последний ответ Апрель 26, 2015, 15:19:08
от madmasles
17 Ответов
4221 Просмотров
Последний ответ Сентябрь 30, 2016, 20:59:53
от ini
0 Ответов
1257 Просмотров
Последний ответ Декабрь 18, 2016, 12:45:25
от mef-t
2 Ответов
735 Просмотров
Последний ответ Апрель 26, 2017, 06:42:40
от Skif_off
4 Ответов
1147 Просмотров
Последний ответ Июнь 20, 2017, 15:54:08
от Garrett
0 Ответов
393 Просмотров
Последний ответ Январь 10, 2018, 01:25:08
от betauto
0 Ответов
644 Просмотров
Последний ответ Март 04, 2018, 21:52:01
от Dim-soft
0 Ответов
131 Просмотров
Последний ответ Октябрь 09, 2018, 04:57:47
от Бонифаций