Что нового

Перевод на английский язык с использованием translate.google.com/#

Сообщения
29
Репутация
0
Добрый вечер.
Есть такой вопрос:

В файле 1.txt записано слово "здравствуйте".
Рядом лежит пустой файл 2.txt

Как скриптом извлечь текст из файла 1.txt и используя инструмент translate.google.com/# вписать в файл 2.txt - получившийся перевод ?

Имеется вот такой код:
Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>

#include "Encoding.au3"

$hGUI = GUICreate("Google Translator", 400, 390)

GUICtrlCreateLabel("Select Translation Language:", 20, 22)
$nLangSel_Combo = GUICtrlCreateCombo("", 180, 20, 200, 50, BitOr($GUI_SS_DEFAULT_COMBO, $CBS_DROPDOWNLIST))
_SetTranslateLangs_Proc($nLangSel_Combo, "en - английский")

GUICtrlCreateLabel("Text to translate:", 20, 60)
$nInputText_Edit = GUICtrlCreateEdit("", 20, 80, 360, 120)

GUICtrlCreateLabel("Text to translate:", 20, 210)
$nOutputText_Edit = GUICtrlCreateEdit("", 20, 230, 360, 120, BitOr($GUI_SS_DEFAULT_EDIT, $ES_READONLY))

$nTranslate_Btn = GUICtrlCreateButton("Translate", 20, 360, 80, 20)
$nStatus_Label = GUICtrlCreateLabel("", 140, 362, 150, 30)
GUICtrlSetFont($nStatus_Label, 10, 800)
GUICtrlSetColor($nStatus_Label, 0x0000FF)

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nTranslate_Btn
            GUICtrlSetState($nTranslate_Btn, $GUI_DISABLE)
            GUICtrlSetData($nStatus_Label, "Please wait...")

            $sText = StringReplace(GUICtrlRead($nInputText_Edit), @CRLF, " ")
            $sLang = StringRegExpReplace(GUICtrlRead($nLangSel_Combo), " - .*$", "")
            $sResult = BinaryToString(InetRead("http://translate.google.com/translate_t?text=" & $sText & "&hl=ru&langpair=auto|" & $sLang & "&eotf=0&tbb=1"))

            $sResult = StringRegExpReplace( _
            $sResult, _
                '(?si).*<span (?:title=".*?" onmouseover=".*?" onmouseout=".*?|id=result_box class=".*?")>(.*?)</span>.*', _
                '\1')

            If _Encoding_IsUTF8Format($sResult) Then
                $sResult = _Encoding_UTF8ToANSI($sResult)
            EndIf

            GUICtrlSetData($nOutputText_Edit, $sResult)
            GUICtrlSetState($nTranslate_Btn, $GUI_ENABLE)
            GUICtrlSetData($nStatus_Label, "")
    EndSwitch
WEnd

Func _SetTranslateLangs_Proc($nComboID, $sDefault = "")
    GUICtrlSetData($nComboID, "ru - русский|en - английский|az - азербайджанский|sq - албанский|ar - арабский|hy - армянский|af - африкаанс|eu - баскский|be - белорусский|bg - болгарский|cy - валлийский|hu - венгерский|vi - вьетнамский|gl - галисийский|nl - голландский|el - греческий|ka - грузинский|da - датский|iw - иврит|yi - идиш|id - индонезийский|ga - ирландский|is - исландский|es - испанский|it - итальянский|ca - каталанский|zh-CN - китайский|ko - корейский|ht - креольский (Гаити)|la - латынь|lv - латышский|lt - литовский|mk - македонский|ms - малайский|mt - мальтийский|de - немецкий|no - норвежский|fa - персидский|pl - польский|pt - португальский|ro - румынский|ru - русский|sr - сербский|sk - словацкий|sl - словенский|sw - суахили|tl - тагальский|th - тайский|tr - турецкий|uk - украинский|ur - урду|fi - финский|fr - французский|hi - хинди|hr - хорватский|cs - чешский|sv - шведский|et - эстонский|ja - японский|en - английский|az - азербайджанский|sq - албанский|en - английский|ar - арабский|hy - армянский|af - африкаанс|eu - баскский|be - белорусский|bg - болгарский|cy - валлийский|hu - венгерский|vi - вьетнамский|gl - галисийский|nl - голландский|el - греческий|ka - грузинский|da - датский|iw - иврит|yi - идиш|id - индонезийский|ga - ирландский|is - исландский|es - испанский|it - итальянский|ca - каталанский|zh-TW - китайский (традиционный)|zh-CN - китайский (упрощенный)|ko - корейский|ht - креольский (Гаити)|la - латынь|lv - латышский|lt - литовский|mk - македонский|ms - малайский|mt - мальтийский|de - немецкий|no - норвежский|fa - персидский|pl - польский|pt - португальский|ro - румынский|ru - русский|sr - сербский|sk - словацкий|sl - словенский|sw - суахили|tl - тагальский|th - тайский|tr - турецкий|uk - украинский|ur - урду|fi - финский|fr - французский|hi - хинди|hr - хорватский|cs - чешский|sv - шведский|et - эстонский|ja - японский", $sDefault)
EndFunc

Но он использует некий интерфейс, где надо самостоятельно выбирать язык и т.д., а мой вопрос - что бы он самостоятельно переводил текст из 1.txt и вставлял в 2.txt
 

Вложения

Автор
В
Сообщения
29
Репутация
0
ra4o, вы дали ссылку - на в точности тот же самый скрипт, который указан в первой теме.
Вопрос-то был как раз про этот скрипт.
 

ra4o

Скриптер
Сообщения
993
Репутация
183
Можно переделать скрипт таким образом:
Код:
#include "Encoding.au3"

[email protected]&'\1.txt'
[email protected]&'\2.txt'

$hFile = FileOpen($sFileWrite, 2)
FileWrite($hFile,_Translate(FileRead($sFileRead),'en'))
FileClose($hFile)

Func _Translate($sText,$sLang)
$sText = StringReplace($sText, @CRLF, " ")
$sResult = BinaryToString(InetRead("http://translate.google.com/translate_t?text=" & $sText & "&hl=ru&langpair=auto|" & $sLang & "&eotf=0&tbb=1"))

$sResult = StringRegExpReplace( _
$sResult, _
	'(?si).*<span (?:title=".*?" onmouseover=".*?" onmouseout=".*?|id=result_box class=".*?")>(.*?)</span>.*', _
	'\1')

If _Encoding_IsUTF8Format($sResult) Then
	$sResult = _Encoding_UTF8ToANSI($sResult)
EndIf

Return $sResult
EndFunc
что бы он самостоятельно переводил текст из 1.txt и вставлял в 2.txt
Вы не указали язык на который переводить нужно, в примере выше - английский.
 

igorit

Новичок
Сообщения
24
Репутация
0
Добрый день. Решил воспользоваться данной функцией (последний пример) - не работает. В файле 2.txt вместо перевода находится скачанная страничка, без перевода.
Как это исправить?
Сообщение автоматически объединено:

При том функция возвращает страницу не в том виде, в каком она есть если просто сделать сохранение через браузер.
Сообщение автоматически объединено:

Все дело в движке Интернет Эксплорера. Это он не дает сохранить страницу полностью. Я пробовал ранее сохранять страницы чарез Хром и Оперу - страницы сохранялись полностью, с переводом. А в ИЕ - без перевода...
То есть надо либо ИЕ заставить полностью получать страницу, либо использовать движок от Хрома или Оперы..
Что посоветуете? Что можно сделать?
 
Последнее редактирование:
Верх