Автор Тема: Переводчик Google  (Прочитано 33041 раз)

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

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #45, Отправлен: Июнь 19, 2014, 13:15:14 »
madmasles  [?]
Цитировать
Предлагаю немного изменить файл иконок флагов и их использование
Сложновато для разбора, я понял в чём идея, но хотел бы это применить без dictionary и в том же формате что я привык :)...
И ещё, там остаются пустые строки, а также нужно чтобы автоопределение было всегда сверху.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

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

Re: Переводчик Google
« Ответ #45 Отправлен: Июнь 19, 2014, 13:15:14 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Переводчик Google
« Ответ #46, Отправлен: Июнь 19, 2014, 13:40:54 »
CreatoR  [?]
Цитировать
И ещё, там остаются пустые строки, а также нужно чтобы автоопределение было всегда сверху.
Не понял, где остаются пустые строки? Автоопределение у меня всегда сверху в Translate From.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #47, Отправлен: Июнь 19, 2014, 13:47:24 »
madmasles  [?]
Цитировать
где остаются пустые строки?
Сверху.

Цитировать
Автоопределение у меня всегда сверху в Translate From.
А у меня как по сортировке.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #48, Отправлен: Июнь 19, 2014, 13:50:11 »
madmasles
Я вам советую поставить последнюю версию AutoIt, там было много изменений :).

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

Re: Переводчик Google
« Ответ #48 Отправлен: Июнь 19, 2014, 13:50:11 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Переводчик Google
« Ответ #49, Отправлен: Июнь 19, 2014, 15:34:27 »
CreatoR  [?]
Цитировать
Я вам советую поставить последнюю версию AutoIt, там было много изменений
Я проверял код на всех версиях (постоянно использую AutoIt Path Switcher - Переключение пути к папке AutoIt, спасибо Вам). Вот несколько скриншотов при запуске моего кода в 3.3.12.0:


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #50, Отправлен: Июнь 19, 2014, 16:28:26 »
Видимо от версий это не зависит.
У меня вот так:


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

Оффлайн zabu [?]

  • Новичок
  • *
  • Сообщений: 14
  • Репутация: 1
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #51, Отправлен: Июнь 30, 2014, 18:23:45 »
Цитировать
А почему именно Google, а не Yandex ?
Потому что Google переводит лучше.

Поскольку у меня большие сомнения на счет этого выкладываю вариант для Яндекс перевода. Не забудьте получить ключ чтобы все работало

Код: AutoIt [Выделить]
$YA_KEY = "";http://api.yandex.ru/key/keyslist.xml

ConsoleWrite(YaTranslate("Hello, how are you?", "ukr")&@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



Добавлено: Июнь 30, 2014, 19:21:22
Доступные варианты перевода:

(нажмите для показа/скрытия)


Добавлено: Июнь 30, 2014, 19:47:27
Вариант с Google переводом работает у меня около трех секунд, с яндексом это миллисекунды. То есть в сотни раз быстрей.
« Последнее редактирование: Июнь 30, 2014, 19:47:27 от zabu, Причина: Объединение сообщений »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #52, Отправлен: Июль 09, 2014, 18:42:47 »
madmasles
У меня ваш пример с POST не переводит с auto.
Также не удаётся переводить с языков в юникод (например с Иврита).

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

Re: Переводчик Google
« Ответ #52 Отправлен: Июль 09, 2014, 18:42:47 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Переводчик Google
« Ответ #53, Отправлен: Июль 09, 2014, 20:24:49 »
CreatoR  [?]
Цитировать
У меня ваш пример с POST не переводит с auto...
Похоже, надо с этими запросами разбираться более подробно, я же привел простой пример, который работает (тупо скопировал в код то, что показал сниффер при переводе файла).

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #54, Отправлен: Июль 10, 2014, 03:18:16 »
Это ошибка самого переводчика. Если указать файл (содержимое это текст на русском), и выбрать авто определение и переводить на английский, то выдаёт:
Цитировать
Страница, которую вы пытались перевести, уже переведена на английский.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #55, Отправлен: Ноябрь 07, 2015, 03:44:07 »
Обновление...

Цитировать
v0.5
+ Добавлена опция "Переводить по мере набора текста".
* Убрано ограничение символов при переводе  (спасибо madmasles).
* Улучшена обработка изменения языка.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #56, Отправлен: Ноябрь 18, 2015, 01:55:05 »
Обновление...

Цитировать
v0.6
+ Добавлена опция "Переводить по выделению".
+ Добавлена опция "Проговорить" текст (используя Yandex SpeechKit Cloud).
+ Добавлен диалог настроек (с базовыми опциями).
+ Добавлен диалог "О программе".

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Переводчик Google
« Ответ #57, Отправлен: Декабрь 07, 2015, 15:35:50 »
Обновление...

Цитировать
V0.7
* Исправлена проблема с не сохранением выбранного Голоса в настройках.
* Голос теперь можно выбрать даже если опция "Переводить по выделению" отключена.

Оффлайн mr_Gleb [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Переводчик Google
« Ответ #58, Отправлен: Февраль 09, 2017, 10:38:56 »
Уважаемый Автор и форумчане!
Помогите, пожалуйста, вытянуть из исходников этой программы рабочую функцию перевода. :(
Так что функция с параметрами _Func('Текст для перевода', 'язык на который переводить') возвращает переведенный текст.
Длина текста не большая (до 100 знаков), язык - автоопределение, желательно подсунуть Encoding.au3 и HTMLEntities.au3, т.к. текст вырезается из исходника HTML (в основном Китайский язык).
Сам целый день сидел, пытался подправить код этой проги :whistle:, чтобы она заработала без компиляции и без GUI - ничего не получилось (виснет).  :think:
Заранее всем спасибо!

Оффлайн mr_Gleb [?]

  • Новичок
  • *
  • Сообщений: 2
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Переводчик Google
« Ответ #59, Отправлен: Февраль 10, 2017, 18:35:04 »
Сидел, правил, кодил - одинфик не работает:
_Func _GoogleTranslateServerIsOnline() - выдает пустую строку
_GoogleTranslateString($sText, 'auto', 'ru') - Unable to connect to translate.googleusercontent.com
Кто "шарит" в чем проблема, помогите исправить!

Вот что получилось:
Код: AutoIt [Выделить]
#NoTrayIcon
#include 'HTMLEntities.au3'

Global Const $sUserAgent = 'Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.17'
Global Const $sGoogleMain_Server = 'translate.google.com'
Global Const $sGoogleTranslate_Server = 'translate.googleusercontent.com'
Global $sApp_Language = 'English'


MsgBox(0, '', _GoogleTranslateServerIsOnline())


$sText='Finds an entry within an one-dimensional array'
$sResult = _GoogleTranslateString($sText, 'auto', 'ru')


MsgBox(0, '', $sResult)


Func _GoogleTranslateServerIsOnline()
    Local $iTimeout = 3000, $iPort = 80
    Local $sName_To_IP = TCPNameToIP($sGoogleMain_Server)
    Local $iSocket = TCPConnect($sName_To_IP, $iPort)
   
    If $iSocket = -1 Then
        TCPCloseSocket($iSocket)
        Return SetError(1, 0, "")
    EndIf
   
    Local $sCommand = 'HEAD / HTTP/1.0' & @CRLF
   
    $sCommand &= 'Host: ' & $sGoogleMain_Server & @CRLF
    $sCommand &= 'User-Agent: ' & $sUserAgent & @CRLF
    $sCommand &= 'Connection: close' & @CRLF & @CRLF
   
    Local $iBytesSent = TCPSend($iSocket, $sCommand)
   
    If $iBytesSent = 0 Then
        Return SetError(2, @error, 0)
    EndIf
   
    Local $iTimer = TimerInit(), $sRecv = '', $sCurrentRecv = ''
    Local $iOpt_TO = Opt('TCPTimeout', $iTimeout)
   
    While 1
        $sCurrentRecv = TCPRecv($iSocket, 8192)
       
        If @error <> 0 Then
            ExitLoop
        EndIf
       
        If $sCurrentRecv <> '' Then
            $sRecv &= $sCurrentRecv
        EndIf
       
        If TimerDiff($iTimer) >= $iTimeout Then
            ExitLoop
        EndIf
    WEnd
   
    TCPCloseSocket($iSocket)
    Opt('TCPTimeout', $iOpt_TO)
   
    Return StringRegExp($sRecv, '(?i)HTTP/\d.\d (200|30[1-2])') And Not StringRegExp($sRecv, '(?i)Server: Microsoft.*')
EndFunc


Func _GoogleTranslateString($sText, $sFrom, $sTo)
    Local $sBound, $sPost, $sRecv, $sRet, $sConDis = 'Content-Disposition: form-data; name='
    Local $iTimeout = 3000, $iPort = 80
   
    $sBound = StringFormat('----------------%s%s%smzF', @MIN, @HOUR, @SEC)
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"sl"' & @CRLF & @CRLF
    $sPost &= $sFrom & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"tl"' & @CRLF & @CRLF
    $sPost &= $sTo & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"js"' & @CRLF & @CRLF
    $sPost &= 'y' & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"prev"' & @CRLF & @CRLF
    $sPost &= '_t' & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"hl"' & @CRLF & @CRLF
    ;$sPost &= $sLangTo & @CRLF
    $sPost &= StringLeft($sApp_Language, 2) & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"ie"' & @CRLF & @CRLF
    $sPost &= 'UTF-8' & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"text"' & @CRLF & @CRLF
    $sPost &= '' & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"file"; filename="results.txt"' & @CRLF
    $sPost &= 'Content-Type: text/plain' & @CRLF & @CRLF
    $sPost &= BinaryToString(StringToBinary($sText, 4)) & @CRLF
    $sPost &= $sBound & @CRLF
    $sPost &= $sConDis & '"edit-text"' & @CRLF & @CRLF
    $sPost &= $sBound & '--' & @CRLF
   
    Local $iOpt_TO = Opt('TCPTimeout', $iTimeout)
    Local $sName_To_IP = TCPNameToIP($sGoogleTranslate_Server)
    Local $iSocket = TCPConnect($sName_To_IP, $iPort)
   
    If $iSocket = -1 Then
        TCPCloseSocket($iSocket)
        Opt('TCPTimeout', $iOpt_TO)
        Return SetError(-1, 0, 'Unable to connect to ' & $sGoogleTranslate_Server)
    EndIf
   
    Local $sCommand = 'POST /translate_f HTTP/1.1' & @CRLF
   
    $sCommand &= 'Host: ' & $sGoogleTranslate_Server & @CRLF
    $sCommand &= 'User-Agent: ' & $sUserAgent & @CRLF
    $sCommand &= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' & @CRLF
    $sCommand &= 'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3' & @CRLF
    $sCommand &= 'Connection: close' & @CRLF
    $sCommand &= 'Content-Type: multipart/form-data; boundary=' & StringTrimLeft($sBound, 2) & @CRLF
    $sCommand &= 'Content-Length: ' & StringLen($sPost) & @CRLF & @CRLF
    $sCommand &= $sPost
   
    TCPSend($iSocket, $sCommand)
   
    While 1
        $sRecv &= TCPRecv($iSocket, 8192)
       
        If @error <> 0 Then
            ExitLoop
        EndIf
    WEnd
   
    TCPCloseSocket($iSocket)
    Opt('TCPTimeout', $iOpt_TO)
   
    $sRecv = BinaryToString(StringToBinary($sRecv), 4)
    $sRet = StringRegExpReplace($sRecv, '(?is).*?<pre>(.*?)</pre>.*', '$1')
   
    If @extended = 0 Then
        $sRet = StringRegExpReplace($sRecv, '(?is).*?<title>(.*?)</title>.*', '$1')
    EndIf
   
    $sRet = _HTMLEntities_Decode($sRet)
   
    If Not StringRegExp($sRecv, '^HTTP/1.1 200 OK') Then
        Return SetError(1, 0, $sRet)
    EndIf
   
    Return SetExtended(StringRegExp($sTo, '(?i)^(Ar|Fa|Iw|Ur|Yi)$'), $sRet)
EndFunc
 


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

Re: Переводчик Google
« Ответ #59 Отправлен: Февраль 10, 2017, 18:35:04 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
10 Ответов
7308 Просмотров
Последний ответ Сентябрь 21, 2009, 09:49:34
от Yashied
6 Ответов
4185 Просмотров
Последний ответ Декабрь 16, 2010, 16:02:03
от CreatoR
5 Ответов
10927 Просмотров
Последний ответ Ноябрь 18, 2015, 01:44:51
от CreatoR
7 Ответов
7406 Просмотров
Последний ответ Январь 15, 2012, 12:39:23
от AZJIO
4 Ответов
2404 Просмотров
Последний ответ Июнь 26, 2013, 15:33:28
от Geqsogen
2 Ответов
1526 Просмотров
Последний ответ Июль 31, 2013, 11:47:16
от WSWR
2 Ответов
2237 Просмотров
Последний ответ Декабрь 17, 2013, 16:16:38
от jilexandr
6 Ответов
2378 Просмотров
Последний ответ Январь 07, 2014, 08:41:25
от AZJIO
4 Ответов
3008 Просмотров
Последний ответ Апрель 11, 2014, 18:46:59
от Mazin
1 Ответов
1351 Просмотров
Последний ответ Июнь 02, 2014, 12:23:52
от WSWR