rendered paste body/* * ---------------------------------------------------------------------------- * "BABELFISH TRANSLATOR - DISCLAIMER" * This script is provided 'as is', without warranty of any kind. Dont forget * that. This file is written by Dhaya and you can do * whatever you want with this code as long as you retain this notice. * Have fun using it ! * * version 1.0.090606 * Dhaya <dhaya@benmessaoud.info> * /Freely inspired from dt's notice * ---------------------------------------------------------------------------- */var ajax = new ActiveXObject("Microsoft.XMLHTTP");var WndContact = new Object();var arrLangCodes = new Array();arrLangCodes[0] = ["en","nl","fr","de","it","pt","es"];arrLangCodes[1] = "zh,zt,nl,fr,de,el,it,ja,ko,pt,ru,es";arrLangCodes[2] = "en,fr";arrLangCodes[3] = "en,de,el,it,pt,nl,es";arrLangCodes[4] = "en,fr";arrLangCodes[5] = "en,fr";arrLangCodes[6] = "en,fr";arrLangCodes[7] = "en,fr";function OnEvent_ChatWndSendMessage(ChatWnd,Message){ if (Message.match(/^!translate .+/)) { var arrMsg = Message.split(" "); if (arrMsg[1] == "info") { var WndLang = MsgPlus.CreateWnd("babelfishtranslator.xml","WndLang"); //some function to populate the combobox } else { var isOk = 0; switch (arrMsg[1]) { case "en": var strEn = "zh,zt,nl,fr,de,el,it,ja,ko,pt,ru,es"; if (strEn.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "nl": var strNl = "en,fr"; if (strNl.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "fr": var strFr = "en,de,el,it,pt,nl,es"; if (strFr.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "de": var strDe = "en,fr"; if (strDe.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "it": var strIt = "en,fr"; if (strIt.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "pt": var strPt = "en,fr"; if (strPt.indexOf(arrMsg[2]) != -1) isOk = 1; break; case "es": var strEs = "en,fr"; if (strEs.indexOf(arrMsg[2]) != -1) isOk = 1; break; default: isOk = 0; break; } if (isOk == 1) { WndContact = ChatWnd; Translate(arrMsg[1],arrMsg[2],Message.substr(17)); } else { MsgPlus.DisplayToast("Babelfish Translator","The translation format is invalid.\n\nType !translate info to learn more."); } } return ""; } else if (Message.match(/^!translate$/i)) { MsgPlus.DisplayToast("Babelfish Translator","There is no translation format.\n\nType !translate info to learn more."); return ""; }}function Translate(strFrom, strTo, strMessage){ var arrAccentFrom = new Array("%E9","%E8","%E7","%E0","%F9","%EB","%EE","%E1","%ED","%F3","%FA","%FC","%F1","%F5","%F4","%E3","%E2","%EA"); var arrAccentTo = new Array("%c3i","%c3h","%c3g","%c3`","%c39","%c3k","%c3n","%c3a","%c3m","%c33","%c3z","%c3|","%c31","%c35","%c34","%c3c","%c3b","%c3j"); strMessage = escape(strMessage); Debug.Trace("Before:"+strMessage); for (var i=0;i<arrAccentFrom.length;i++) { strMessage = strMessage.replace(eval("/"+arrAccentFrom[i]+"/ig"),arrAccentTo[i]); } Debug.Trace("After:"+strMessage); ajax.open("GET","http://babelfish.altavista.com/tr?trtext="+strMessage+"&lp="+strFrom+"_"+strTo, true); ajax.onreadystatechange = getTranslation; ajax.send(null);}function getTranslation(){ WndContact.EditText = "Translating... ("+ajax.readyState*25+"%)"; if (ajax.readyState == 4) { var strBabelfish = ajax.responseText; var strMessage = strBabelfish.match(/div style=padding:10px;>([^<]+)</i); if (strMessage != null) { WndContact.EditText = ""; WndContact.SendMessage(strMessage[1]); } else { WndContact.EditText = "Babelfish Translator hasn't detected the translated strings.\nPlease retry with other words."; } }}function OnGetScriptMenu(Location){ if (Location == 2) { var xmlMenu = new String(); xmlMenu += '<ScriptMenu>'; xmlMenu += '<MenuEntry Id="mnuTranslate">Translate...</MenuEntry>'; xmlMenu += '<MenuEntry Id="mnuInfo">Get informations (!translate info)</MenuEntry>'; xmlMenu += '<SubMenu Label="Auto translation">'; xmlMenu += '<MenuEntry Id="mnuAutoOn">On (!translate auto lng1 lng2)</MenuEntry>'; xmlMenu += '<MenuEntry Id="mnuAutoOff">Off (!translate auto off)</MenuEntry>'; xmlMenu += '</SubMenu>'; xmlMenu += '<Separator/>'; xmlMenu += '<MenuEntry Id="mnuAbout">About...</MenuEntry>'; xmlMenu += '</ScriptMenu>'; return xmlMenu; }}function OnEvent_MenuClicked(MenuItemId, Location, OriginWnd){ switch (MenuItemId) { case "mnuTranslate": var WndTranslation = MsgPlus.CreateWnd("babelfishtranslator.xml","WndTranslate"); for (var i=0;i<arrLangCodes[0].length;i++) { WndTranslation.LstBox_AddItem("lstFrom",arrLangCodes[0][i],i+1); } WndTranslation.LstBox_SetCurSel("lstFrom",0); var arrLangs = arrLangCodes[1].split(","); for (var j=0;j<arrLangs.length;j++) { WndTranslation.LstBox_AddItem("lstTo",arrLangs[j]); } WndContact = OriginWnd; return; case "mnuInfo": OriginWnd.SendMessage("!translate info"); return; case "mnuAutoOn": return; case "mnuAutoOff": return; case "mnuAbout": MsgPlus.CreateWnd("babelfishtranslator.xml","WndAbout"); return; }}function OnWndTranslateEvent_LstBoxSelChanged(PlusWnd,ControlId){ if (ControlId == "lstFrom") { var strFrom = PlusWnd.LstBox_GetItemText("lstFrom",PlusWnd.LstBox_GetCurSel("lstFrom")); Debug.Trace(strFrom); }}function OnWndTranslateEvent_CtrlClicked(PlusWnd,ControlId){ switch (ControlId) { case "btnGo": WndContact.SendMessage("!translate "+PlusWnd.LstBox_GetItemText("lstFrom",PlusWnd.LstBox_GetCurSel("lstFrom"))+" "+PlusWnd.LstBox_GetItemText("lstTo",PlusWnd.LstBox_GetCurSel("lstTo"))+" "+PlusWnd.GetControlText("txtText")); PlusWnd.Close(1); break; case "btnCancel": PlusWnd.Close(0); break; }}function OnWndAboutEvent_CtrlClicked(PlusWnd,ControlId){ if (ControlId == "btnClose") PlusWnd.Close(1);}