Advertisement
Ford

Autotrans translated.net version

Oct 15th, 2012
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 11.86 KB | None | 0 0
  1. ;Auto Translator by Ford_Lawnmower irc.GeekShed.net #Script-Help
  2. menu Channel {
  3.   .$iif($gettok($hget(autotrans,$+($network,$chan)),3,32) == On && $group(#AutoTrans) == On,$style(1)) AutoTrans
  4.   ..$iif($group(#AutoTrans) == On,$style(1)) Auto Trans Master On/Off: $iif($group(#AutoTrans) == On,.disable,.enable) #AutoTrans  
  5.   ..Auto Trans Setup:dialog $iif($dialog(auto_translator),-v,-m) auto_translator auto_translator
  6.   ..Manage Exclusions:dialog $iif($dialog(auto_translator_exclude),-v,-m) auto_translator_exclude auto_translator_exclude
  7. }
  8. #AutoTrans On
  9. On *:Text:*:#: {
  10.   if (!$timer($+(AutoTrans,$network,$nick))) {
  11.     .timer $+ $+(AutoTrans,$network,$nick) 1 1 noop
  12.     if ($gettok($hget(autotrans,$+($network,$chan)),3,32) == On) && (!$regex($1,/^[!.@.#.+./.:.-.+]/S)) {
  13.       var %text $urlencode($utfdecode($utfencode($exclude($1-))))
  14.       tokenize 32 $hget(autotrans,$+($network,$chan))
  15.       AutoTrans $2 $iif($2 == .Msg,$chan,$iif($2 == Echo,$chan,$me)) $iif($4,$+(09[04,$nick,09]),0) $langpair($1),1,32)) %text 0
  16.     }
  17.   }
  18. }
  19. On *:Action:*:#: {
  20.   if (!$timer($+(AutoTrans,$network,$nick))) {
  21.     .timer $+ $+(AutoTrans,$network,$nick) 1 1 noop
  22.     if ($gettok($hget(autotrans,$+($network,$chan)),3,32) == On) {
  23.       var %text $urlencode($exclude($1-))
  24.       tokenize 32 $hget(autotrans,$+($network,$chan))
  25.       AutoTrans $2 $iif($2 == .Msg,$chan,$iif($2 == Echo,$chan,$me)) $iif($4,$+(09[04,$nick,09]),0) $langpair($1),1,32)) %text 0
  26.     }
  27.   }
  28. }
  29. #AutoTrans End
  30. On *:input:*: {
  31.   if ($left($strip($1),2) == \\) && (!$ctrlenter) {
  32.     haltdef
  33.     var %text $inputencode($2-)
  34.     AutoTrans msg $iif($chan,$chan,$active) $me $remove($1,\\) %text 1
  35.   }  
  36. }
  37. on ^$*:Hotlink:/\[([a-zA-Z]{2})\]-\[([a-zA-Z]{2})\]/:#,?:{
  38.   if ($mouse.key == 16) && ($input(Respond through translator $+($regml(2),-,$regml(1)),yn)) {
  39.     if ($?="Please Input your text to be translated") {
  40.       AutoTrans msg $iif($chan,$chan,$nick) $me $regml(1) $urlencode($!) 1
  41.     }  
  42.   }
  43.   halt
  44. }
  45. alias EchoAutoTrans { AutoTrans echo -a $1- }
  46. alias -l AutoTranslate {
  47.   var %sockname $+(AutoTrans,$network,$3,$ticks,$r(1,$ticks))
  48.   sockopen %sockname translate.google.com 80
  49.   sockmark %sockname $1-2 $+(/translate_t?langpair=,$4,&ie=UTF-8&oe=UTF-8&text=,$5) $3 $6 $4 $5
  50. }
  51. On *:sockopen:AutoTrans*: {
  52.   if (!$sockerr) {
  53.     sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.1
  54.     sockwrite -n $sockname Host: translate.google.com
  55.     sockwrite -n $sockname Referer: $+(http://,$ip)
  56.     sockwrite -n $sockname $crlf
  57.   }
  58.   else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  59. }
  60. On *:sockread:AutoTrans*: {
  61.   if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  62.   else {
  63.     sockread &AutoTrans
  64.     var %AutoTrans $bvar(&AutoTrans,1-).text
  65.     if ($regex(text,%AutoTrans,/backgroundColor='#fff'">(.*?)<\/span>/gi)) {
  66.       var %counter 1, %text
  67.       while (%counter <= $regml(text,0)) {
  68.         %text = $+(%text,$chr(32),$replace($fixhtml($regml(text,%counter)),quot;,"))
  69.         inc %counter
  70.       }
  71.       var %country $+([,$replace($gettok($sock($sockname).mark,6,32),|,]-[),],)
  72.       if ($gettok($sock($sockname).mark,5,32)) { $gettok($sock($sockname).mark,1-2,32) %text | sockclose $sockname | return }
  73.       elseif ($matches(%text,$recode($mid($gettok($gettok($sock($sockname).mark,3,32),-2,38),3-)))) {
  74.         if ($nopunct(%text) != $nopunct($recode($gettok($sock($sockname).mark,7,32)))) {
  75.           $gettok($sock($sockname).mark,1-2,32) 06Translation07 %country $&
  76.             $iif($gettok($sock($sockname).mark,4,32),$gettok($sock($sockname).mark,4,32)) %text
  77.         }
  78.         sockclose $sockname
  79.         return  
  80.       }
  81.     }    
  82.   }
  83. }
  84. alias -l nopunct { return $regsubex($1-,/[\x2c!"#$%&'()*+\-./:;<=>?@[\\\]^_`{|}~]/g,$null) }
  85. alias -l inputencode { return $regsubex($strip($1-),/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2)) }
  86. alias -l exclude { return $regsubex($strip($1-),/(http:\/\/[\S]{1,}|www\.[\S]{1,})/g,$null) }
  87. alias -l urlencode { return $regsubex($1-,/([^a-z0-9])/ig,$urlpairs($asc(\t))) }
  88. alias -l recode { return $regsubex($1-,/%([A-Fa-f0-9]{2})/g,$chr($base(\t,16,10))) }
  89. alias -l fixhtml { return $replace($remove($regsubex($remove($regsubex($1-,/#([\d][\d][\d]?);/g,$chr(\t)),&amp;,gt;,lt;),/\\u([A-Fa-f0-9]{4})/g,$chr($base(\t,16,10))),&amp;,&),&quot;,") }
  90. alias -l notrans { return $iif($hfind(notrans,$1),1,0) }
  91. alias -l matches {
  92.   var %w $numtok($1,32),%x 1,%y 0,%z $numtok($2,32)
  93.   while (%x <= %z) {
  94.     if ($istok($1,$gettok($2,%x,32),32)) || ($notrans($gettok($2,%x,32))) { inc %y }
  95.     inc %x
  96.   }
  97.   return $iif($calc(%y / %w * 100) >= 80,0,1)
  98. }
  99. alias -l UrlPairs {
  100.   if ($1 < 255) { return $+(%,$base($1,10,16)) }
  101.   if ($1 >= 256) && ($1 < 2048) { return $+(%,$base($calc(192 + $div($1,64)),10,16),%,$base($calc(128 + $mod($1,64)),10,16)) }
  102.   if ($1 >= 2048) && ($1 < 65536) { return $+(%,$base($calc(224 + $div($1,4096)),10,16),%,$base($calc(128 + $mod($div($1,64),64)),10,16),%,$base($calc(128 + $mod($1,64)),10,16)) }
  103. }
  104. alias -l div { return $int($calc($1 / $2)) }
  105. alias -l mod {
  106.   var %int $int($calc($1 / $2))
  107.   return $calc($1 - (%int * $2))
  108. }
  109. dialog Auto_Translator {
  110.   title "Auto Translator Setup"
  111.   size -1 -1 118 126
  112.   option dbu
  113.   text "Target Language:", 1, 4 9 45 8, right
  114.   text "Network:", 2, 4 25 45 8, right
  115.   text "Channel:", 3, 4 42 45 8, right
  116.   text "Output Type:", 4, 4 59 45 8, right
  117.   combo 5, 51 8 62 11, drop
  118.   combo 6, 51 24 62 11, drop
  119.   combo 7, 51 41 62 11, drop
  120.   combo 8, 51 58 62 11, drop
  121.   combo 9, 51 77 62 11, drop
  122.   text "Status:", 10, 4 78 45 8, right
  123.   button "Accept", 11, 78 110 34 12
  124.   button "Cancel", 12, 39 110 34 12, cancel
  125.   check "Show Nickname", 13, 63 97 50 10
  126. }
  127. dialog Auto_Translator_Exclude {
  128.   title "Auto Translator Exclusion Manager"
  129.   size -1 -1 144 144
  130.   option dbu
  131.   text "Exclusion:", 1, 4 7 27 8, right
  132.   text "Exclusions", 2, 1 21 142 8, center
  133.   edit "", 3, 33 6 72 10, autohs
  134.   list 4, 6 33 131 94, vsbar
  135.   button "Add", 5, 107 5 29 12
  136.   button "Delete", 6, 50 130 37 12
  137.   button "Close", 7, 97 130 37 12, cancel
  138. }
  139. On *:dialog:Auto_Translator_Exclude:Sclick:5,6: {
  140.   if ($did == 5) && ($did($dname,3).text) { hadd -m notrans $v1 | did -r $dname 3 }
  141.   if ($did == 6) && ($did($dname,4).seltext) { hdel notrans $v1 }
  142.   did -r $dname 4
  143.   didtok $dname 4 32 $regsubex($str(.,$hget(notrans,0).item),/./g,$hget(notrans,\n).item $+ $chr(32))
  144. }
  145. On *:dialog:Auto_Translator_Exclude:init:*: {
  146.   didtok $dname 4 32 $regsubex($str(.,$hget(notrans,0).item),/./g,$hget(notrans,\n).item $+ $chr(32))
  147. }
  148. on *:dialog:Auto_Translator:Sclick:6,7,11: {
  149.   if ($did == 11) {
  150.     tokenize 32 $did($dname,6).seltext $did($dname,7).seltext $did($dname,5).seltext $did($dname,8).seltext $did($dname,9).seltext
  151.     hadd -m autotrans $+($1,$chr(35),$2) $3- $did($dname,13).state
  152.     dialog -x $dname
  153.   }
  154.   if ($did == 6) {
  155.     did -r $dname 7
  156.     didtok $dname 7 35 $chans($did($dname,6).seltext)
  157.     did -fc $dname 7 1
  158.   }
  159.   if ($hget(autotrans,$+($did($dname,6).seltext,$chr(35),$did($dname,7).seltext))) {
  160.     var %match $v1
  161.     did -c $dname 5 $didwm($dname,5,$gettok(%match,1,32))
  162.     did -c $dname 8 $didwm($dname,8,$gettok(%match,2,32))
  163.     did -c $dname 9 $didwm($dname,9,$gettok(%match,3,32))
  164.     did $iif($gettok(%match,4,32),-c,-u) $dname 13
  165.   }
  166. }
  167. on *:dialog:Auto_Translator:init:*: {
  168.   didtok $dname 5 44 AFRIKAANS,ALBANIAN,AMHARIC,ARABIC,ARMENIAN,AZERBAIJANI,BASQUE,BELARUSIAN,BENGALI,BIHARI,BULGARIAN,BURMESE,CATALAN,CHEROKEE
  169.   didtok $dname 5 44 CHINESE,CHINESE_SIMPLIFIED,CHINESE_TRADITIONAL,CROATIAN,CZECH,DANISH,DHIVEHI,DUTCH,ENGLISH,ESPERANTO,ESTONIAN,FILIPINO
  170.   didtok $dname 5 44 FINNISH,FRENCH,GALICIAN,GEORGIAN,GERMAN,GREEK,GUARANI,GUJARATI,HEBREW,HINDI,HUNGARIAN,ICELANDIC,INDONESIAN,INUKTITUT
  171.   didtok $dname 5 44 IRISH,ITALIAN,JAPANESE,KANNADA,KAZAKH,KHMER,KOREAN,KURDISH,KYRGYZ,LAOTHIAN,LATVIAN,LITHUANIAN,MACEDONIAN,MALAY,MALAYALAM
  172.   didtok $dname 5 44 MALTESE,MARATHI,MONGOLIAN,NEPALI,NORWEGIAN,ORIYA,PASHTO,PERSIAN,POLISH,PORTUGUESE,PUNJABI,ROMANIAN,RUSSIAN,SANSKRIT,SERBIAN
  173.   didtok $dname 5 44 SINDHI,SINHALESE,SLOVAK,SLOVENIAN,SPANISH,SWAHILI,SWEDISH,TAJIK,TAMIL,TAGALOG,TELUGU,THAI,TIBETAN,TURKISH,UKRAINIAN
  174.   didtok $dname 5 44 URDU,UZBEK,UIGHUR,VIETNAMESE,WELSH,YIDDISH
  175.   did -c $dname 5 $didwm($dname,5,ENGLISH)
  176.   var %nets $scon(0)
  177.   while (%nets) { scon %nets did -a $dname 6 $!network | dec %nets }
  178.   did -c $dname 6 $didwm($dname,6,$network)
  179.   didtok $dname 7 35 $chans($network)
  180.   did -c $dname 7 $didwm($dname,7,$mid($active,2-))
  181.   didtok $dname 8 44 Echo,.Msg,.Notice
  182.   did -c $dname 8 1
  183.   didtok $dname 9 44 On,Off
  184.   did -c $dname 9 2
  185.   if ($hget(autotrans,$+($network,$active))) {
  186.     var %match $v1
  187.     did -c $dname 5 $didwm($dname,5,$gettok(%match,1,32))
  188.     did -c $dname 8 $didwm($dname,8,$gettok(%match,2,32))
  189.     did -c $dname 9 $didwm($dname,9,$gettok(%match,3,32))
  190.     did $iif($gettok(%match,4,32),-c,-u) $dname 13
  191.   }
  192. }
  193. alias -l LangPair {
  194.   var %return $replace($1-,AFRIKAANS,af,ALBANIAN,sq,AMHARIC,am,ARABIC,ar,ARMENIAN,hy,AZERBAIJANI,az,BASQUE,eu,BELARUSIAN,be,BENGALI,bn,$&
  195.     BIHARI,bh,BULGARIAN,bg,BURMESE,my,CATALAN,ca,CHEROKEE,chr,CHINESE,zh,CHINESE_SIMPLIFIED,CN,CHINESE_TRADITIONAL,TW,$&
  196.     CROATIAN,hr,CZECH,cs,DANISH,da,DHIVEHI,dv,DUTCH,nl,ENGLISH,en,ESPERANTO,eo,ESTONIAN,et,FILIPINO,tl,FINNISH,fi,FRENCH,fr,$&
  197.     GALICIAN,gl,GEORGIAN,ka,GERMAN,de,GREEK,el,GUARANI,gn,GUJARATI,gu,HEBREW,iw,HINDI,hi,HUNGARIAN,hu,ICELANDIC,is,$&
  198.     INDONESIAN,id,INUKTITUT,iu,IRISH,ga,ITALIAN,it,JAPANESE,ja,KANNADA,kn,KAZAKH,kk,KHMER,km,KOREAN,ko,KURDISH,ku,KYRGYZ,ky)
  199.   return $replace(%return,LAOTHIAN,lo,LATVIAN,lv,LITHUANIAN,lt,MACEDONIAN,mk,MALAY,ms,MALAYALAM,ml,MALTESE,mt,MARATHI,mr,MONGOLIAN,mn,NEPALI,ne,$&
  200.     NORWEGIAN,no,ORIYA,or,PASHTO,ps,PERSIAN,fa,POLISH,pl,PORTUGUESE,pt,PUNJABI,pa,ROMANIAN,ro,RUSSIAN,ru,SANSKRIT,sa,$&
  201.     SERBIAN,sr,SINDHI,sd,SINHALESE,si,SLOVAK,sk,SLOVENIAN,sl,SPANISH,es,SWAHILI,sw,SWEDISH,sv,TAJIK,tg,TAMIL,ta,TAGALOG,tl,$&
  202.     TELUGU,te,THAI,th,TIBETAN,bo,TURKISH,tr,UKRAINIAN,uk,URDU,ur,UZBEK,uz,UIGHUR,ug,VIETNAMESE,vi,WELSH,cy,YIDDISH,yi)
  203. }
  204. alias -l chans { scon $netid($1) return $!regsubex($str(.,$chan(0)),/./g,$chan(\n)) }
  205. alias -l netid {
  206.   var %netcount $scon(0)
  207.   while %netcount {
  208.     if ($scon(%netcount).network == $1) { return %netcount }
  209.     dec %netcount
  210.   }
  211. }
  212. On *:Start:{
  213.   hmake AutoTrans 5
  214.   hmake NoTrans 5
  215.   if ($exists(AutoTrans.hsh)) { hload AutoTrans AutoTrans.hsh  }
  216.   if ($exists(NoTrans.hsh)) { hload NoTrans NoTrans.hsh  }
  217. }
  218. On *:Disconnect:{
  219.   if ($hget(AutoTrans)) { hsave AutoTrans AutoTrans.hsh }
  220.   if ($hget(NoTrans)) { hsave NoTrans NoTrans.hsh }  
  221. }
  222. On *:Exit:{
  223.   if ($hget(AutoTrans)) {
  224.     hsave AutoTrans AutoTrans.hsh
  225.     hfree AutoTrans
  226.   }
  227.   if ($hget(NoTrans)) {
  228.     hsave NoTrans NoTrans.hsh
  229.     hfree NoTrans
  230.   }  
  231. }
  232. On *:Unload:{ hfree AutoTrans | hfree NoTrans }
  233. ;;;;;;;Start edit;;;;;;;;;
  234. alias -l AutoTrans {
  235.   var %sockname $+(LanguageDetection,$network,$3,$ticks,$r(1,$ticks))
  236.   sockopen %sockname labs.translated.net 80
  237.   sockmark %sockname $1-2 $+(/language-identifier/?text=,$5) $3 $6 $4 $5
  238. }
  239. On *:sockopen:LanguageDetection*: {
  240.   if (!$sockerr) {
  241.     sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0
  242.     sockwrite -n $sockname Host: $sock($sockname).addr
  243.     sockwrite -n $sockname $crlf
  244.   }
  245.   else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  246. }
  247. On *:sockread:LanguageDetection*: {
  248.   if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  249.   else {
  250.     var %LanguageDetection | sockread %LanguageDetection
  251.     if ($regex(%LanguageDetection,/This text seems to be <b>.+?\x28([^<]+)\s/i)) {
  252.       var %l1 $lower($regml(1))
  253.       tokenize 32 $sock($sockname).mark
  254.       if (%l1 != $6) {
  255.         Autotranslate $1-2 $4 $+(%l1,|,$6) $7 $5
  256.       }
  257.       sockclose $sockname
  258.       return
  259.     }
  260.   }
  261. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement