Método Para Traduzir String

Sempre pensei em um método que traduzisse uma String, na linguagem mesmo, encapsulado, sem precisar de classes de terceiros, etc. Há algum tempo atrás resolvi fazê-lo em Ruby e ficou guardado um bom tempo, até eu realmente precisar usá-lo, aproveito e mostro a vocês.

require "net/http";
require "uri";
require "hpricot";

class String
  
  def translate(from, to, opts={})
    params = {
      "text" => self, 
      "langpair" => "#{from}|#{to}", 
      "ie" => opts.delete(:encode) || "UTF-8", 
      "hl" => "pt-BR"
    }.merge(opts);
    text = Net::HTTP.post_form(URI.parse("http://translate.google.com/translate_t"), params).body;
    Hpricot(text).search("#result_box").inner_html;
  end
  
end

"A simple text to be translated".translate(:en, :pt);  #=> "Um simples texto a ser traduzido"

Ele faz uma consulta ao Google Tradutor e retorna o resultado traduzido. O primeiro parâmetro é a abreviação da língua na qual a String foi escrita e o segundo a língua para qual ela será traduzida, há também um terceiro, um hash com dados a serem enviados via POST. Ele usa a biblioteca Hpricot para buscar o trecho correspondente à tradução no documento HTML, poderia ser feito com expressões regulares, mas ficaria feio.

5 Responses to Método Para Traduzir String

  1. Micox disse:

    Ho, muito bão isso ae heim…

  2. Rapaz… põe bom nisso! Show de bola!

  3. Joao disse:

    Fala meu velho… parabens pelo post, muito legal!
    Sobre essa biblioteca ‘require “uri”;’ isso é uma gem?? Como faço para instalar…

    abraço,
    Joao.

  4. Michael Tim disse:

    I love your site!

    _____________________
    Experiencing a slow PC recently? Fix it now!

  5. dedicated server europe

    Método Para Traduzir String | Bernardo Rufino

Deixe um comentário