class GgTranslator::Translator

Attributes

last[RW]
phrase_mode[RW]
sl[RW]
tl[RW]

Public Class Methods

new(sl = 'auto', tl = 'ru') click to toggle source
# File lib/gg_translator.rb, line 26
def initialize(sl = 'auto', tl = 'ru')
  @sl = sl
  @tl = tl
end

Public Instance Methods

exp(text = nil) click to toggle source
# File lib/gg_translator.rb, line 39
def exp(text = nil)
  text.strip!
  text ||= Readline::HISTORY.to_a.last
  text = URI.encode(text)
  req = "/translate_a/ex?sl=#{@sl}&tl=#{@tl}&q=#{text}"
  res = ask_google(req)[0][0]
  res && res.map{|e| [e.first, e[3]]}.each do |s, translation|
    s = s.split(/<b>|<\/b>/)
    puts "#{s[0]}#{s[1].upcase}#{s[2]}"
    s = translation.split(/<b>|<\/b>/)
    puts "#{s[0]}**#{s[1].upcase}**#{s[2]}"
    puts '-'*80
  end
  true
end
t(text) click to toggle source
# File lib/gg_translator.rb, line 31
def t(text)
  base_url = '/translate_a/t?client=j&pc=0&oc=1&hl=en&ie=UTF-8&oe=UTF-8'
  req = "#{base_url}&text=#{text}&sl=#{@sl}&tl=#{@tl}"
  result = ask_google(req)
  @sl = result['src'] #remember language
  print_result(result)
end

Private Instance Methods

ask_google(req) click to toggle source
# File lib/gg_translator.rb, line 56
def ask_google(req)
  proxy = URI.parse(ENV['http_proxy']) if ENV['http_proxy']
  worker = proxy ? Net::HTTP::Proxy(proxy.host, proxy.port) : Net::HTTP
  JSON.parse(worker.get_response('translate.google.com', req).body)
end
print_result(result) click to toggle source