Dynamic Translater

By Cracker200 on Aug 08, 2009

Dynamic Translator by aca20031

Uses google translator to translate lines double clicked in channel or query windows

Use constantly updated list of languages from translate.google.com

This script only translates what's being said to give you a general idea, do not rely on it heavily.

It is not meant to allow you to reply.

Put Translator.mrc into your mIRC directory (//run $mircdir) (usually Documnents > AppData > Roaming > mIRC)

Type in mIRC, /load -rs Translator.mrc

Right click, enable the translator, update the language list if it was not done on load, and then select the languages to translate from and to.
Usually you can use Detect Language as the from language and google will decide what language it is, even if you don't know!

Once set up, simply double click any line in a query or channel window. Disable when not in use so you can click on channels and URLs

Contact aca20031 at ben@st0rm.net and irc.quakenet.org #help.script

C:\Users\Ben\AppData\Roaming\mIRC\

NOT MINE CODE NOT MINE lol just so you lot do not slag me off :) Here is the origanel Link to it http://www.mircscripts.org/comments.php?cid=4297

; Dynamic Translator by Aca20031
on *:LOAD:updatelist
alias -l updatelist {
  set %dt.status Updating
  sockopen dtlangupdate $+ $ticks translate.google.com 80
  message Updating translation language options
}
on *:SOCKOPEN:dtlangupdate*: {
  sockwrite -n $sockname GET / HTTP/1.1
  sockwrite -n $sockname Host: translate.google.com
  sockwrite -n $sockname Connection: Close
  sockwrite -n $sockname
}
on *:SOCKREAD:dtlangupdate*: {
  if ($sockerr) {
    message Error updating language list
    set %dt.status Error
  }
  sockread -f &tmp
  bwrite $sockname -1 -1 &tmp
  while ($sockbr > 0) {
    sockread -f &tmp 
    if ($sockbr > 0) {
      bwrite $sockname -1 -1 &tmp
    }
  }
}
on *:SOCKCLOSE:dtlangupdate*: {
  bread $sockname 1 $file($sockname).size &bvar  
  .remove $sockname
  if ($hget(dt.sl)) {
    hfree dt.sl
  }
  if ($hget(dt.tl)) {
    hfree dt.tl
  }
  hmake dt.sl 1
  hmake dt.tl 1
  var %sl_start = $bfind(&bvar,1,<select name=sl).text
  var %tl_start = $bfind(&bvar,1,<select name=tl).text
  var %end = $bfind(&bvar,1,<span class=langselect id=tl_select>).text
  var %from = %sl_start

  while (%from < %tl_start) {
    var %value_start = $calc($bfind(&bvar,%from,60 111 112 116 105 111 110 32 32 118 97 108 117 101 61 34) +16)
    var %value_end = $bfind(&bvar,%value_start,").text
    var %value = $bvar(&bvar,%value_start,$calc(%value_end - %value_start)).text

    var %text_start = $calc($bfind(&bvar,%value_end,>).text +1)
    var %text_end = $bfind(&bvar,%text_start,<).text
    var %text = $bvar(&bvar,%text_start,$calc(%text_end - %text_start)).text

    if (%value != separator) {
      if (%value == sv) { hadd dt.sl es Spanish }
      hadd dt.sl %value %text
    }

    var %from = %text_end
  }
  var %from = %tl_start
  while (%from < %end) {
    var %value_start = $calc($bfind(&bvar,%from,60 111 112 116 105 111 110 32 32 118 97 108 117 101 61 34) +16)
    var %value_end = $bfind(&bvar,%value_start,").text
    var %value = $bvar(&bvar,%value_start,$calc(%value_end - %value_start)).text

    var %text_start = $calc($bfind(&bvar,%value_end,>).text +1)
    var %text_end = $bfind(&bvar,%text_start,<).text
    var %text = $bvar(&bvar,%text_start,$calc(%text_end - %text_start)).text

    if (%value != separator) {
      if ($hget(dt.tl,%value) || Date isin %value) {
        break 
      }
      if (%value == et) { hadd dt.tl en English }
      hadd dt.tl %value %text
    }
    var %from = %text_end
  }
  message Updated list of languages
  set %dt.status Ready
}
alias -l message {
  echo -atg Translator: $$1-
}

menu channel,query {
  Translator
  .$submenu($enabled($1))
  .Update Language List:updatelist
  .Translate From
  ..$submenu($from($1))
  .Translate To
  ..$submenu($to($1))
}
alias -l enabled {
  if $1 == 1 { return $iif(%dt.enabled,Disable:set % $+ dt.enabled 0,Enable:set % $+ dt.enabled 1) }
}
alias -l from {
  if (!%dt.enabled || %dt.status != Ready || $1 == Begin || $1 == End) { return }
  if ($hget(dt.sl,$calc($hget(dt.sl,0).item - $1 +1)).item) { 
    var %v = $ifmatch
    if (%dt.from == %v) {
      return $style(1) $hget(dt.sl,%v) $+ : $+ message Language already selected
    }
    else {
      return $hget(dt.sl,%v) $+ : $+ select_from %v
    }
  }
}
alias -l to {
  if (!%dt.enabled || %dt.status != Ready || $1 == Begin || $1 == End) { return }
  if ($hget(dt.tl,$calc($hget(dt.tl,0).item - $1 +1)).item) { 
    var %v = $ifmatch
    if (%dt.to == %v) {
      return $style(1) $hget(dt.tl,%v) $+ : $+ message Language already selected
    }
    else {
      return $hget(dt.sl,%v) $+ : $+ select_to %v
    }
  }

}
alias -l select_from {
  set %dt.from $1
}
alias -l select_to {
  set %dt.to $1
}

on ^*:HOTLINK:*:*:if (!%dt.enabled || %dt.status != Ready || !%dt.to || !%dt.from || ($active !ischan && !$query($active))) { halt }
on *:HOTLINK:*:*: {
  if (!%dt.enabled || %dt.status != Ready || !%dt.to || !%dt.from) { halt }
  /*
  var %from_window = $active
  var %w = @window $+ $ticks $+ $rand(1,99999)
  window %w
  filter -wwz %from_window %w *
  iline %w $hotlinepos Test.
  ; clear %from_window
  echo -atg filter -dza %w testing
  */

  translate_and_append $activecid $active $strip($hotline)
}
alias -l translate_and_append {
  var %s = dt. $+ $ticks $+ $rand(1,9999)
  sockopen %s translate.google.com 80
  sockmark %s $1-
}

on *:SOCKOPEN:dt.*: {

  var %request = $+(text=,$gettok($sock($sockname).mark,3-,32),&sl=,%dt.from,&tl=,%dt.to)

  sockwrite -n $sockname POST /translate_t HTTP/1.1
  sockwrite -n $sockname Host: translate.google.com
  sockwrite -n $sockname Accept-Encoding: gzip,deflate
  sockwrite -n $sockname Connection: close
  sockwrite -n $sockname Content-Length: $len(%request)
  sockwrite -n $sockname
  sockwrite -n $sockname %request
  sockwrite -n $sockname

}
on *:SOCKREAD:dt.*: {
  if ($sockerr) {
    message Error downloading translation response
  }
  sockread -f &tmp
  bwrite $sockname -1 -1 &tmp
  while ($sockbr > 0) {
    sockread -f &tmp 
    if ($sockbr > 0) {
      bwrite $sockname -1 -1 &tmp
    }
  }

}
on *:SOCKCLOSE:dt.*: {
  bread $sockname 1 $file($sockname).size &bvar  
  .remove $sockname
  var %start = $calc($bfind(&bvar,1,<div id=result_box dir="ltr">).text + $len(<div id=result_box dir="ltr">))
  var %end = $bfind(&bvar,%start,</div>)
  scid $gettok($sock($sockname).mark,1,32) echo $gettok($sock($sockname).mark,2,32) 3Translation:  $html($bvar(&bvar,%start,$calc(%end - %start)).text)
}
alias -l html {
  return $regsubex($replacex($1-,&lt;,<,&gt;,>,&quot;,"),&#(\d+);,$chr(\1))
}

Comments

Sign in to comment.
zainul   -  Nov 09, 2009

top script none the less
:)

 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.