alias babel {
if (!$1) {
echo -a Syntax: /babel <words to translate here, max 700 chars>
return
}
set %babel $left($1-,700)
if ($sock(babel)) sockclose babel
sockopen babel world.altavista.com 80
if ($sockerr) babelfail
.timerbabel 1 30 babelfail
}
alias babelfail {
echo -a Error: Unable to connect to babelfish
.timerbabel off
unset %babel
sockclose babel
}
on *:SOCKOPEN:babel:{
if ($sockerr) {
babelfail
return
}
if (!%babel) {
sockclose babel
echo -a Error: No text to translate
return
}
var %babelu = %babel
%babelu = $replace(%babelu,%,% $+ 25)
while ($regex(babel,%babelu,/([^% \w])/Sg)) {
var %babelu = $replace(%babelu,$regml(babel,1),% $+ $base($asc($regml(babel,1)),10,16))
if ($calc($len(%babelu) $+ 2) > 800) break
}
var %type = en_fr
var %data = doit=done&intl=1&tt=urltext&trtext= $+ $replace(%babelu,$chr(32),+) $+ &lp= $+ %type $+ &btnTrTxt=Translate
var %write = sockwrite -tn $sockname
%write POST /tr HTTP/1.1
%write Referer: http://world.altavista.com/tr
%write Content-Type: application/x-www-form-urlencoded
%write Host: world.altavista.com
%write Content-Length: $len(%data)
%write Connection: close
%write
%write %data
}
on *:SOCKCLOSE:babel:{
echo -s Error: Babelfish closed the connection
.timerbabel off
unset %babel
}
on *:SOCKREAD:babel:{
var %sread
sockread %sread
if (%babelcontinue) %babelt = %babelt %sread
var %regex = /<td bgcolor=white class=s><div style=padding:10px;>(.+)$/Si
if ($regex(babel,%sread,%regex)) {
set %babelt $regml(babel,1)
set %babelcontinue 1
}
var %regex = /(.+)<\/div><\/td>/Si
if ($regex(babelb,%babelt,%regex)) {
set %babelt $regml(babelb,1)
set %babelcontinue 0
var %babeldone 1
}
if (%babeldone) {
echo 4 -a " $+ %babel $+ "
echo -a ...translates to...
echo 4 -a " $+ %babelt $+ "
.timerbabel off
unset %babel*
sockclose $sockname
}
}