All pastes #80593 Raw Edit

Mine

public javascript v1 · immutable
·published 2006-07-06 16:28 UTC
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")		{			MsgPlus.CreateWnd("babelfishtranslator.xml","WndInfo");		}		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);}