Code: Select all
;google translate - test joedf - 2014/07/02
#SingleInstance, off
Gui Add, Text, x6 w40, Input:
Gui Add, ComboBox, yp+1 x+4 w80 vCBSource, auto||en|de|fr|es
Gui Add, Edit, w300 h80 vInputBox,
Gui Add, Text, x6 w40, Result:
Gui Add, ComboBox, yp x+4 w80 vCBDest, en||de|fr|es
Gui Add, Edit, w300 h100 vResultBox,
Gui Add, Button, gBtnTranslate vBtnTranslate +Default, Translate
Gui Add, ActiveX, x0 y0 w0 h0 vWB, Shell.Explorer ; The final parameter is the name of the ActiveX component.
WB.silent := true ;Surpress JS Error boxes
ComObjConnect(WB, WB_events) ; Connect WB's events to the WB_events class object.
Gui, Add, StatusBar,, Idle.
Gui Show
return
GuiClose:
ExitApp
BtnTranslate:
GuiControlGet,Words,,InputBox
if Words is Space
return
GuiControl,Disable,BtnTranslate
GuiControlGet,SourceLang,,CBSource
GuiControlGet,DestLang,,CBDest
if SourceLang is Space
GuiControl,ChooseString,CBSource, % SourceLang:="auto"
if DestLang is Space
GuiControl,ChooseString,CBDest, % DestLang:="en"
/* SourceLang := "auto" ;country code of the source language
* DestLang := "de" ;country code of the destination language
* Words := "Je mange une pomme rouge. J'aime bien le chocolat au lait." ;words to be translated
*/
GoogleTranslateURL := "http://translate.google.com/#" SourceLang "/" DestLang "/" Words
;StringReplace,GoogleTranslateURL,GoogleTranslateURL,%A_Space%,`%20,All
SB_SetText("Loading...")
WB.Navigate(GoogleTranslateURL) ; This is specific to the web browser control.
return
class WB_events
{
;NavigateComplete2(wb, NewURL)
;DownloadComplete(wb, NewURL)
DocumentComplete(wb, NewURL)
{
if (WB.ReadyState == 4) { ; see http://stackoverflow.com/a/9835755/883015
SB_SetText("Downloaded. Loading JS...")
t_s:=A_TickCount
while (StrLen(WB.document.getElementById("result_box").innerHTML)==0) {
;wait
}
t_e:=A_TickCount
;Quick-Remove Html Tags
data:=RemoveHtmlTags(WB.document.getElementById("result_box").innerHTML)
GuiControl,,ResultBox, % data
ResultLang:=GetGoogleTranslateLanguage(WB.document.getElementById("gt-sl-sugg").innerHTML)
SB_SetText("Done. JS Loaded in " (t_e-t_s) " ms. Input Language: " ResultLang)
GuiControl,Enable,BtnTranslate
}
return
}
}
RemoveHtmlTags(data) {
return RegExReplace(data,"<(\/)?[^<>]*(\/)?>")
}
GetGoogleTranslateLanguage(langbar_data) {
langs:=StrSplit(langbar_data,"</div>")
Main_lang:="Unknown"
for each, lang in langs
if InStr(lang,"aria-pressed=""true""")
Main_lang:=Trim(RemoveHtmlTags(lang))
if k:=InStr(Main_lang," - ") {
StringLeft,Main_lang,Main_lang,%k%
Main_lang := Trim(Main_lang) " [Detected]"
}
return Main_lang
}
FanaticGuru! cool, hmm lol... i have a size 0px control...