I know, I know, you've seen millions of Google Translators out there... :|
[size=14]What's different about this than any other ones out there?[/size]
Not only does this include the Traditional Google Translator, I've added an edition to make it actually translate [size=14]your text[/size] to [size=14]another language of your choice[/size], automatically!
So, what languages can I use? All 41 available languages to Google Translator:
[size=14]Detect language, Albanian, Arabic, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Filipino, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian, Vietnamese[/size], including the addition of Detect Language for your convenience.
[size=14]What else? Some new accomplishments and points:[/size]
[size=14]A final note if you will use this:[/size]
[size=18]Sorry if it looks a bit awkward, with the distorted/"looks like missing" text...I don't use the regular mIRC on Windows; instead, I use mIRC on Wine.[/size]
Nevertheless, enjoy! :D
;BOF
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~~*~*~*~*~*~*~*~*~*;
; Google Translator - Traditional Translator + Auto Text-Translator ;
; Made by Kirby (Quakenet) ;
;*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*;
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*;
;Google Translator Aliases/Identifiers/Input/Menu;
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*;
;// Open up the Google Translator Dialog - Syntax: /trans //
alias trans { dialog $iif($dialog(translator),-v,-m) translator translator }
;// Other aliases/identifiers //
alias -l ab2word { var %x Translator\languages.txt, %y Translator\abbreviations.txt | noop $read(%y,w,$1) | return $iif($read(%x,$readn),$v1) }
alias -l char { return $replace($regsubex($1,/&#(x?([a-f\d]*));/gi,$chr($iif($left(\1,1) == x,$base(\2,16,10),\2))),&,&,<,<,>,>,",") }
alias -l between { noop $regex($1,/\Q $+ $2 $+ \E(.*?)\Q $+ $3 $+ \E/gi) | return $regml($4) }
alias -l gdid { did -r translator 24 | didtok translator 24 44 $hget(Translator,Channels) | did -b translator 26-27 }
alias -l gfix { hfree Translator | trans | echo -a * Problem has been fixed. }
alias -l gwrite { var %x $1 | tokenize 32 $2- | write $+(Translator\,%x) $* }
alias -l hex { return $regsubex($1-,/([^\d\w])/gi,$+(%,$base($asc(\1),10,16))) }
alias -l smsg { msg $iif(c isincs $chan($1).mode,$1 $strip($2-),$1-) }
alias -l word2ab { var %x Translator\languages.txt, %y Translator\abbreviations.txt | noop $read(%x,w,$1) | return $iif($read(%y,$readn),$v1) }
;// On Input - Edit settings in the dialog to automatically translate your text to another language! //
on *:input:*: {
if ($hget(Translator,Status)) && (!$regex($1-,^[\/(.*)])) && (!$sock(translator)) && (!$istok($hget(Translator,Channels),#,44)) {
sockopen translator translate.google.com 80 | sockmark translator input $+($word2ab($hget(Translator,Lang)),|,$word2ab($hget(Translator,Lang2))) $hex($1-) | haltdef
}
}
;// Google Translator Menu //
menu * {
Google Translator
.Traditional Google Translator : trans
.-
.$iif($hget(Translator,Status),$style(1)) Auto Text-Translator $+($chr(40),$iif($hget(Translator,Lang),$v1,*None*),$chr(32),$chr(187),$chr(32),$iif($hget(Translator,Lang2),$v1,*None*),$chr(41))
..$iif($hget(Translator,Status),$style(2)) Turn Auto Text-Translator On: hadd -m Translator Status $true | echo -a * Google Auto Text-Translator is now 09ON.
..$iif(!$hget(Translator,Status),$style(2)) Turn Auto Text-Translator Off: hadd -m Translator Status $false | echo -a * Google Auto Text-Translator is now 04OFF.
.-
.$iif($group(#Translator) == On,$style(1)) Google Translator (Bot Command)
..$iif($group(#Translator) == On,$style(2)) Turn Bot Command On: .enable #Translator | echo -a * Google Bot Translator is now 09ON.
..$iif($group(#Translator) == Off,$style(2)) Turn Bot Command Off: .disable #Translator | echo -a * Google Bot Translator is now 04OFF.
.-
.Encountered a problem? Click here to fix it. : gfix
}
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~;
;Translate text to any 41 languages available - Syntax: /translate <language|language2> <text>;
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~;
alias translate {
var %x $gettok($1,1,124), %y $gettok($1,2,124)
if ($isfile(Translator\languages.txt)) && ($isfile(Translator\abbreviations.txt)) {
if ($numtok($1-,32) <= 1) { echo -a * Syntax example: /translate en|es Hello, my name is $+($me,!) }
elseif (!$ab2word(%x)) || (!$ab2word(%y)) { echo -a * Strings do not match. $iif($ab2word(%x) == $ab2word(%y),%x and %y are not valid.,$iif(!$ab2word(%x),%x is invalid.,$iif(!$ab2word(%y),%y is invalid.))) }
else { sockopen translator translate.google.com 80 | sockmark translator alias $1 $hex($2-) }
}
elseif (!$isfile(Translator\languages.txt)) || (!$isfile(Translator\abbreviations.txt)) {
$iif($isdir(Translator),noop $findfile(Translator,*,0,0,.remove $1-),mkdir Translator)
sockclose translator | sockopen translator translate.google.com 80 | sockmark translator load alias
echo -a * Downloading Abbreviations and Languages from translate.google.com...
}
}
;~*~*~*~*~*~*~*~*~*~*~*~*~;
;Google Translator Sockets;
;~*~*~*~*~*~*~*~*~*~*~*~*~;
on *:sockopen:translator: {
tokenize 32 $sock(translator).mark
sockwrite -n $sockname GET $+(/translate_t?langpair=,$2,&text=,$3) HTTP/1.0
sockwrite -n $sockname Host: translate.google.com
sockwrite -n $sockname $crlf
}
on *:sockread:translator: {
sockread %translator
tokenize 32 $sock(translator).mark
if ($regex(%translator,<div id=result_box dir="ltr">(.*)</div><div id=clir>)) && ($1 != load) {
if ($1 == dialog) { did -ra translator 9 $regsubex($char($regml(1)),/([\s])?<br>([\s])?/g,$crlf) }
elseif ($1 == alias) { echo -a * Translation $+($chr(40),,$ab2word($gettok($2,1,124)), $chr(187) ,$ab2word($gettok($2,2,124)),,$chr(41),:)) $char($regml(1)) }
elseif ($1 == input) { msg $active $char($regml(1)) }
elseif ($1 ischan) { smsg $1 Translation $+($chr(40),,$ab2word($gettok($2,1,124)), $chr(187) ,$ab2word($gettok($2,2,124)),,$chr(41),:)) $char($regml(1)) }
}
elseif ($regex(%translator,value="(.+)">) && ($1 == load)) {
var %x $regsubex($between(%translator,</option>,</select>,1),/(<option (value|SELECTED value)="(.*?)">|<\/option>)/g,$chr(32)), %y $remove($regsubex($between(%translator,;</option>,</select>,1),/(<option (value|SELECTED value)=|>(.*?)<\/option>)/g,$chr(32)),$chr(34))
gwrite languages.txt $+(Detect,$chr(160),language) %x | gwrite abbreviations.txt auto %y
echo -a * Abbreviations and Languages have been successfully written to $+($mircdirTranslator,\,.) :-)
if ($dialog(translator)) { dialog -x translator translator | dialog -m translator translator | halt }
$iif($2 == cmd,.notice $3,echo -a *) Sorry for the inconvenience - required Abbreviations and Languages' files could not be located, but the problem has been fixed. Retry? :D
}
}
on *:sockclose:translator: { if ($dialog(translator)) { did -e translator 8,12 | did -ra translator 13 Done! } | unset %translator }
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~;
;Google Translator Dialog Information/Events;
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~;
;// Dialog format //
dialog translator {
title "Google Translator"
size -1 -1 411 95
option dbu
tab "Google Translator (Traditional :D)", 10, 2 -1 407 94
text "Enter text to translate.", 6, 8 16 57 8, tab 10
edit "", 1, 7 26 187 40, tab 10 multi autovs
combo 2, 7 74 60 75, tab 10 size drop
combo 3, 81 74 60 75, tab 10 size drop
text ">", 7, 72 74 4 8, tab 10
link "swap", 4, 149 75 13 8, tab 10
button "Translate", 8, 175 73 40 12, tab 10
edit "", 9, 216 26 187 40, tab 10 read multi autovs
text "Translation:", 5, 217 16 120 8, tab 10
button "Copy translation to Clipboard", 12, 229 73 83 12, tab 10
edit "", 13, 321 74 82 10, tab 10 read autohs center
tab "Google Auto Text-Translator (talk in any language! :D)", 11
text "Your language:", 15, 13 28 67 8, tab 11
text "New language:", 16, 102 28 66 8, tab 11
combo 17, 16 40 60 75, tab 11 size drop
combo 18, 105 40 60 75, tab 11 size drop
text "Auto-Translation Status:", 19, 202 35 60 8, tab 11
radio "Turn script on", 20, 186 47 43 10, tab 11
radio "Turn script off", 21, 233 47 44 10, tab 11
text "QUACK from QUAKENET!", 22, 208 61 48 20, tab 11 center
list 24, 295 25 54 60, tab 11 sort size hsbar vsbar
button "Add channel", 25, 353 31 44 12, tab 11
button "Delete channel", 26, 353 49 44 12, tab 11
button "Modify channel", 27, 353 67 44 12, tab 11
box "Translation Options:", 28, 181 24 101 58, tab 11
box "Exception Channels:", 23, 290 16 112 73, tab 11
box "Chat in any language!", 14, 9 16 164 73, tab 11
text ">", 29, 89 41 4 8, tab 11
link "swap", 30, 85 54 13 8, tab 11
box "Credits", 31, 20 65 142 19, tab 11
text "Made by: Kirby", 32, 40 72 37 8, tab 11
text "Network: Quakenet", 33, 95 72 48 8, tab 11
}
;// Dialog Events //
on *:dialog:translator:*:*: {
var %t Translator\languages.txt, %s Translator\abbreviations.txt
if ($devent == init) {
if (!$isdir(Translator)) || (!$isfile(%t)) || (!$isfile(%s)) {
did -b translator 2-3,8
$iif($isdir(Translator),noop $findfile(Translator,*,0,0,.remove $1-),mkdir Translator)
sockclose translator | sockopen translator translate.google.com 80 | sockmark translator load
echo -a * Downloading Abbreviations and Languages from translate.google.com...
haltdef
}
if ($hget(Translator,Channels)) { didtok translator 24 44 $v1 }
$iif($hget(Translator,Status),did -c translator $iif($v1,20,21),hadd -m Translator Status $false)
if (!$hget(Translator,Lang)) || (!$hget(Translator,Lang2)) { hadd -m Translator Lang English | hadd -m Translator Lang2 Spanish }
var %x 1
while (%x <= $lines(%t)) {
if ($hget(Translator,Lang) isin $read(%t,%x)) { var %l $readn }
elseif ($hget(Translator,Lang2) isin $read(%t,%x)) { var %m $readn }
did -a translator 2-3,17-18 $read(%t,%x) | inc %x
}
did -c translator 2 11 | did -c translator 3 37 | did -b translator 8,12,26-27 | did -ra translator 13 Ready. | did -c translator 17 %l | did -c translator 18 %m | did -c translator $iif($hget(Translator,Status),20,21)
}
if ($devent == sclick) {
if ($did == 4) { var %x $did(2), %y $did(3) | noop $read(%t,w,%x) | did -c translator 3 $readn | noop $read(%t,w,%y) | did -c translator 2 $readn }
if ($did == 8) {
if ($did(2) == $did(3)) { did -ra translator 9 $did(1) | haltdef }
var %x 1, %y $did(1).lines
while (%x <= %y) { var %z $+(%z,$did(1,%x),$chr(37),$chr(48),$chr(65)) | inc %x }
if (!$sock(translator)) { sockopen translator translate.google.com 80 | sockmark translator dialog $+($word2ab($did(2)),|,$word2ab($did(3))) $replace($hex(%z),$+($chr(37),$chr(50),$chr(53),$chr(48),$chr(65)),$+($chr(37),$chr(48),$chr(65))) }
did -b translator 8 | did -o translator 5 1 Translation: $did(2) $chr(187) $did(3) | did -ra translator 13 Translating...
}
if ($did == 12) {
var %x 1, %y $did(9).lines
while (%x <= %y) { var %z $iif(%y == 1,$did(9,%x),$+(%z,$crlf,$did(9,%x))) | inc %x }
clipboard %z | did -ra translator 13 Copied to clipboard!
}
if ($did isnum 17-18) { hadd -m Translator $iif($did isnum 17,Lang,Lang2) $did($did) }
if ($did isnum 20-21) { hadd -m Translator Status $iif($did isnum 20,$true,$false) }
if ($did == 24) && ($did(24).sel) { did -e translator 26-27 }
if ($did == 25) { var %x $hget(Translator,Channels), %y $input(Enter a channel name that you want to add to the exception's list. (Channel names may be separated with a comma.),eiow,Attention!) | hadd -m Translator Channels $addtok(%x,$iif($regex(%y,^#),%y,$+($chr(35),%y)),44) | gdid }
if ($did == 26) { var %x $hget(Translator,Channels) | hadd -m Translator Channels $deltok(%x,$findtok(%x,$did(24).seltext,44),44) | gdid }
if ($did == 27) { var %x $hget(Translator,Channels), %y $input(Enter a channel name that you want to replace with $+($qt($did(24).seltext),.),eiow,Attention!) | hadd -m Translator Channels $reptok(%x,$did(24).seltext,%y,44) | gdid }
if ($did == 30) { hadd -m Translator Lang $did(18) | hadd -m Translator Lang2 $did(17) | var %x $did(17), %y $did(18) | noop $read(%t,w,%x) | did -c translator 18 $readn | noop $read(%t,w,%y) | did -c translator 17 $readn }
}
if ($devent == edit) { did $iif($did(1),-e,-b) translator 8 | did -b translator 12 | did -r translator 9 | did -ra translator 13 Ready. }
}
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*;
;Bot Translator - Syntax: !translate <language|language2> <text> ;
;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*;
#Translator Off
on $*:text:/^[.!@]translate*/Si:#: {
if ($isfile(Translator\languages.txt)) && ($isfile(Translator\abbreviations.txt)) {
if (!$2) {
.notice $nick Syntax: !translate <language|language2> <text> (example: !translate en|es Hello, my name is $+($nick,!,$chr(41))
var %w 1, %x 1, %y Translator\languages.txt, %z Translator\abbreviations.txt
while (%w <= $lines(%y)) { var %a $addtok(%a,$read(%y,%w),32) | inc %w }
.notice $nick Possible languages: $regsubex(%a,/[\s]/g,$+(\1,$chr(44),$chr(32)))
while (%x <= $lines(%z)) { var %b $addtok(%b,$read(%z,%x),32) | inc %x }
.notice $nick Possible combinations: $regsubex(%b,/[\s]/g,$+(\1,$chr(44),$chr(32)))
}
elseif (!$3-) {
var %x $gettok($2,1,124), %y $gettok($2,2,124)
if (!$ab2word(%x)) || (!$ab2word(%y)) { .notice $nick Strings do not match. $iif($ab2word(%x) == $ab2word(%y),%x and %y are not valid.,$iif(!$ab2word(%x),%x is invalid.,$iif(!$ab2word(%y),%y is invalid.))) | halt }
.notice $nick You need to supply a string to translate!
}
elseif ($3-) {
var %x $gettok($2,1,124), %y $gettok($2,2,124)
if ($ab2word(%x)) && ($ab2word(%y)) && (!$sock(translator)) { sockopen translator translate.google.com 80 | sockmark translator # $2 $hex($3-) | halt }
.notice $nick Strings do not match. $iif($ab2word(%x) == $ab2word(%y),%x and %y are not valid.,$iif(!$ab2word(%x),%x is invalid.,$iif(!$ab2word(%y),%y is invalid.)))
}
}
elseif (!$isfile(Translator\languages.txt)) || (!$isfile(Translator\abbreviations.txt)) {
$iif($isdir(Translator),noop $findfile(Translator,*,0,0,.remove $1-),mkdir Translator)
sockclose translator | sockopen translator translate.google.com 80 | sockmark translator load cmd $nick
echo -a * Downloading Abbreviations and Languages from translate.google.com...
}
}
#Translator End
;EOF
Please be patient, I will get to this as soon as I can. Evidently, the script is not working because of socket error; this script was posted a very long time ago, and Google Translator seems to have changed their website format, and I need to adjust to that. At the moment, please do not rate this script, or say that it does not work. Thanks.
It doesn't work.
When I use !translate, it tells me the syntax and the languages.. But when I type, !translate nl|en hoe is het, or others, it won't response.
Even also when I use the /translate alias.
Using mIRC: 6.35
Can you help me?
EDIT: It is also trying to read or search for an .txt file, but WHERE is that txt file? It hasn't been made, it hasn't been downloaded..
Edit: I think I fixed the problem:
gwrite languages.txt Detect language %x | gwrite abbreviations.txt auto %y
The space in between Detect and language was actually a $chr(160) space - I think the Hawkee site "misinterpreted" the $chr(160) space as a regular $chr(32) space.
I've changed it to:
gwrite languages.txt $+(Detect,$chr(160),language) %x | gwrite abbreviations.txt auto %y
, so now there should be the same number of items (lines) in each text file.
I've also tested this on mIRC Version 6.35, and it seems to work for me. Using the latest version will give you the best results. =/
@Scakk
- Invalid format: $+ (line 168, WaiterJohn)
I had a double $+; (I had a $+ inside of a $+).
I've changed it so that it's only one $+. That problem should be fixed.
But I don't know why you can't make another directory.
Make sure you're using Version 6.32 and up (variable length update).. I'll test this on Windows again, but I'm not sure why you're getting those errors at all.
As for winni2, you can't put the [] brackets.
As you can see in the screenshot, you must do something like this:
/translate en|es Hello, my name is kaly*