Translator

By mountaindew on Mar 04, 2008

This is a translator script that I made, it uses Google Translator. It translates English, Spanish, French, Italian, Portuguese, Dutch, and German. But most languages only translate into English.

Syntax: [!translate|/translate] [from-to] [words]

Examples:

/translate fr-en au revoir !translate es-en Tengo un script muy interesante!

Also, there's a dialog. Right click on any window and click "Translator". You click the original language from the left, and then click the language you want to translate to on the right. Type what you want to translate in the edit box, and click "Translate". The translation will show up in the read-only edit box below it.

Screens

Enjoy

;~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~
;                Translator                      *
;            Made by MountainDew                 ~ 
; IRC.DeltaAnime.Net » #Lindrian #mIRC-Scripting *
;  US.UnderNet.Org » #Hawkee.com #mircscripting  ~
;*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*

menu * {
  Translator: trans_dialog
}
alias trans_dialog dialog $iif($dialog(trans),-v,-m) trans trans
dialog trans {
  title "Translator"
  size -1 -1 99 137
  option dbu
  list 1, 8 22 35 49, size
  list 2, 56 22 35 49, size
  box "To", 3, 53 13 41 61
  box "From", 4, 5 13 41 61
  text "Translator", 5, 37 3 29 8
  edit "", 6, 9 79 83 10, multi autohs autovs
  button "OK", 7, 40 126 20 9, ok cancel
  button "Translate", 8, 36 91 28 9, disable
  box "Translation", 9, 5 103 89 20
  edit "", 10, 8 111 83 10, read multi autovs
}
on *:dialog:trans:*:*:{
  if ($devent == init) {
    didtok trans 1,2 32 English Spanish French Portuguese German Dutch Italian
  }
  if ($devent == sclick) {
    if ($did isnum 1-2) {
      if ($did(trans,2).seltext) && ($did(trans,1).seltext) && ($did(trans,6).text) did -e trans 8
      did -r trans 10
    }
    if ($did == 8) {
      if ($did(trans,1).seltext == $did(trans,2).seltext) {
        noop $input(You can't translate to the same language!,ho,Error!)
        did -b trans 8
        halt
      }
      did -b trans 8
      did -r trans 10
      set %t.d 1
      sockopen trans translate.google.com 80
      sockmark trans $+($lang($did(trans,1).seltext),~,$lang($did(trans,2).seltext),~,$did(trans,6))
    }
  }
  if ($devent == edit) {
    did $iif($did(trans,6).text && $did(Trans,2).seltext,-e,-b) trans 8
    did -r trans 10
  }
}
alias translate {
  if ($sock(trans)) {
    %t.msg There's already a translation in progress.
    halt
  }
  set %t.msg $iif(%t.chan,msg $v1,echo -a)
  if (!$regex($$1,/^(?:it|pt|es|nl|de|fr|en)-(?:it|pt|es|nl|de|fr|en)\b/i)) {
    %t.msg Syntax: $iif(%t.chan,!,/) $+ translate from-to [words]
    %t.msg Languages: English (en) French (fr) Spanish (es) Italian (it) Portuguese (pt) German (de) Dutch (nl)
    halt
  }
  elseif (!$2) {
    %t.msg Syntax: $iif(%t.chan,!,/) $+ translate from-to [words]
    halt
  }
  if ($left($1,2) == $right($1,2)) {
    %t.msg You can't translate into the same language!
    halt
  }
  sockopen trans translate.google.com 80
  sockmark trans $+($left($1,2),~,$right($1,2),~,$2-)
  $iif(%t.chan,describe $v1 translates,echo -a Translating) $qt($2-) from $replace($1,-,$chr(32) to $chr(32),es,Spanish,en,English,fr,French,it,Italian,pt,Portuguese,nl,Dutch,de,German) $+ ...
}
on *:sockopen:trans:{
  sockwrite -nt $sockname GET $+(/translate_t?langpair=,$gm($sockname,1,126),$chr(124),$gm($sockname,2,126),&text=,$replace($gm($sockname,3,126),$chr(32),+)) HTTP/1.1
  sockwrite -nt $sockname Host: translate.google.com
  sockwrite -nt $sockname $crlf
}
on *:sockread:trans:{
  sockread &x
  if ($bfind(&x,1,<div id=result_box)) { 
    sockmark $sockname $+($sock($sockname).mark,~,$replace($bvar(&x,$calc($v1 + 29),$calc($bfind(&x,$v1,</div>)- $v1 -29)).text,&#39;,'))
    if (%t.d) {
      did -a trans 10 $gm($sockname,4,126)
      did -e trans 8
    }
    else %t.msg 4Translation: $gm($sockname,4,126)
    sockclose $sockname
    unset %t.*
  }
}
alias lang return $replace($1,Spanish,es,English,en,French,fr,Portuguese,pt,Italian,it,Dutch,nl,German,de)
alias gm return $gettok($sock($1).mark,$2,$3)
alias trans translate $1-
on $*:text:/^[!@.]trans(lat(e|ion))?\b/Si:#:{
  set %t.chan $chan
  translate $2-
}
Sign in to comment.
Warriorii   -  Jun 03, 2012

i got a socket open error on line 45 when i tried to get it to translate (come in) from english to french

 Respond  
Pangaea   -  Mar 31, 2012

lo scott if ur still looking for a 100% worker, fords one is good.. been using it alot and still am since my last post there. U can find fords here on hawkee,If u cant get fords working i guess i could post the one i have currently running, cant rem if i tweeked it... btw when i say its a worker, it is on my 6.2 bot

 Respond  
ScottK   -  Mar 31, 2012

The same thing happens with the Google Translator Windows Gadget - Google decided to be anal concerning API access to the Translator code.

Yay, Google - thanks for remaining to "not be evil"

 Respond  
Pangaea   -  Feb 01, 2011

lol.. argg, is there any translator script that is working? i guess all the sockets have expired or somthing

 Respond  
Kingc44   -  Jun 16, 2010

It keeps saying that there's already a translation in progress :/

 Respond  
CvdEeden   -  Dec 21, 2009

It is translating for houuuuuursssssssss. I said, !translate nl-en hoe is het

And it took 2 hours for it FINALLY responded.

 Respond  
AdrianF   -  Mar 20, 2009

koooool snipppppett

 Respond  
Monkee   -  Jan 31, 2009

Wonderful script. Works perfectly for me. I just have one question, on the dialog, if I wanted to add a button "Send" whereby it sent the translated text to the channel/user, how would I go about that? (command line wise)

When I figure out how to rate I'll be giving this top marks. Good job.

 Respond  
pwnisher3   -  Dec 07, 2008

omg yay. it works perfect. and correct translations :D great job MD

 Respond  
CoOlEsT_n_CuTeSt   -  Dec 05, 2008

hey, i want indonesian to english each line with notice

 Respond  
Free`Spirit   -  Oct 28, 2008

It works without any problem. Thank you! :) One more thing: Did you ever try http://reverso.net ?

 Respond  
Jamiie   -  Oct 02, 2008

Done, I took out the line that says "translation" and switched a few switches around to short alias' to make people think I'm speaking a different language. :P

 Respond  
mountaindew   -  Oct 02, 2008

Thanks Jamiie.

In this line:

set %t.msg $iif(%t.chan,msg $v1,echo -a)

change "echo -a" to "msg $active".

 Respond  
Jamiie   -  Oct 01, 2008

Nicely done mountaindew. 10/10+like.. how would you go about making it message chan or active using the alias? instead of the ! event.

 Respond  
SuPeRFlY   -  Sep 29, 2008

Great script. Excelent work. 10/10

 Respond  
mountaindew   -  Sep 29, 2008

Yea I did add more languages once but I like lost the script when I updated mIRC or something. I'll try to add them again when I get a chance.

 Respond  
Bullet_Dodger   -  Sep 28, 2008

The only reason Japanese , Chinese isnt on there is because on mIRC it comes out ? or � instead of the letters

 Respond  
^Neptune   -  Sep 28, 2008

Yeah would be quite nice to add all available languages on the site. Nice job though.

 Respond  
Bullet_Dodger   -  Sep 28, 2008

Very Good Script [10/10] +Like

 Respond  
new2k4   -  Sep 23, 2008

why not put more languages there? i modified it for myself by adding some more. Though i left out the one that need language pack installed, like Chinese, Japanese...

and it's very nice :) ty

 Respond  
TropicalMeltdown   -  Aug 23, 2008

awww sorry mi bad

 Respond  
mountaindew   -  Aug 23, 2008

TropicalMeltdown, I didn't make the translations themselves, it sockets to Google Translator. There's no such thing as a perfect translator anyways.

 Respond  
TropicalMeltdown   -  Aug 23, 2008

dude its not the rite spanish 5/10

 Respond  
mountaindew   -  Jun 25, 2008

Updated, there was a problem with the &binvars

 Respond  
ShAmPi   -  Jun 25, 2008

Well. It works now :D Might have been googles problem ;)

 Respond  
mountaindew   -  Jun 23, 2008

Really? It seems to work fine for me. Are there any errors in you guys\' status windows?

 Respond  
ShAmPi   -  Jun 23, 2008

Yeah same for me. Again an empty output :(

 Respond  
knoeki   -  Jun 21, 2008

it stopped working for me...

 Respond  
SweeTCooL   -  Jun 09, 2008

oh ok thx dude :D

 Respond  
mountaindew   -  Jun 06, 2008

That\'s a great idea, I never thought of using /didtok :P

Edit: Updated it using didtok

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.