
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.

Junho, 9 - 2008 às 11:44 am |
Ho, muito bão isso ae heim…
Outubro, 30 - 2008 às 2:50 pm |
Rapaz… põe bom nisso! Show de bola!
Fevereiro, 4 - 2009 às 7:34 am |
Fala meu velho… parabens pelo post, muito legal!
Sobre essa biblioteca ‘require “uri”;’ isso é uma gem?? Como faço para instalar…
abraço,
Joao.
Fevereiro, 28 - 2009 às 2:26 pm |
I love your site!
_____________________
Experiencing a slow PC recently? Fix it now!