Что нового

Переводчик на базе google translate

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
Всем здрасььте. Надоело уже переводить в браузере, хочу вынести эту функцию в отдельную программку. Дело в том, что направления перевода, какие есть у гугла - больше нет нигде. Поэтому меня это загоняет в небольшую безысходность. в принципе в гуи все максимально просто. думаю 2 текстовых окна(одно для ввода текста , второе для вывода), ну а также кнопки выбора направления перевода.

Дело в том, что я раньше в сторону web совсем не касался. Подскажите в какую сторону копать. может есть программки похожие на автоит, которые с веб работают по такому плану...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Код:
#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


Encoding.au3
 
Автор
B

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
пасииб большое) сейчас немного доработаю под себя
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
AZJIO [?]
BinaryToString(InetRead(... возвращает не совсем правильно
Он возвращает как раз правильно, просто после перехода по этой ссылке в браузере срабатывает javascript.

P.S
_URLEncode есть и в «Encoding.au3».
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
AZJIO [?]
Немного изменил ссылку
Только ссылку? :laugh:

P.S
Мне не совсем понятно, зачем ты заменяешь константы на их значения? Это неправильно.
 

igorit

Новичок
Сообщения
25
Репутация
0
Добрый день. Решил воспользоваться данной функцией но вместо перевода выводит HTML код, без перевода.
Как это исправить?
При том функция возвращает страницу не в том виде, в каком она есть если просто сделать сохранение через браузер.
Сообщение автоматически объединено:

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