Caracteres especiales y Net::HTTP


#1

Un poco de ruby en este email,

estoy intentado automatizar la traducción de unos textos y creo que
no existen bindings para ruby que se entiendan con el traductor de
Google (existen?) y quien sabe si al final se transforma en una gema
el asunto!

el plan es net::http + open-uri + hpricot

tengo esto, al final se crea un fichero con el resultado

===== CODE

=======

text = “mamá”
Net::HTTP.start(‘translate.google.com’, 80) {|http| response =
http.post("/translate_t?",
“text=#{text}&hl=es&langpair=es|en&tbb=1”)

doc = Hpricot(response.body)
(doc/“div[@id=‘result_box’]”).each do |translation|
results = File.new(File.dirname(FILE) + ‘/response’, ‘w+’)
results.write translation.inner_html
end
}

========================================================================

el caso es que parece que Net::HTTP no envía bien las tildes y
entonces pues google no encuentra la palabra…
he probado con entidades pero no funciona… alguien sabe si se le
puede pasar algo tipo chars de active_support?
hay alguna otra opción?

gracias gente!
marze


#2

Hola,

Yo hice el traductor [1] de esa manera, en este momento no tengo acá el
código, pero en unas horas te mando la manera en que lo solucioné.

[1] http://translate20.com

saludos,
Juan P.


#3

Aquí te dejo el código de mi aplicacion que se comunica con el servidor
de
google y hacer la traducción.

def traducir_texto # se comunica con el servidor de google y traduce el
texto
@texto = “mamá”
@direction = “es|en”
uri = “http://translate.google.com/translate_t

    res = Net::HTTP.post_form(URI.parse(uri), {"commit" =>

“Translate”,
“text” => @texto,

                        "langpair" => @direction, "ie" => 'UTF8'})

    doc = res.body.split('id=result_box dir=ltr>')
    doc = doc[1].split('</div></td></tr><tr><td id=submitcell>')

    @texto_traducido = Translate.pasar_a_utf(doc[0].to_s)

end

Espero que te sirva! Si haces una gem con el código avísame.

saludos,
Juan P…


#4

hey! es un código de puta madre, te has repasado bien la API!
si al final lo transformo en gem lo hacemos a pachas
gracias

marze

El 21/05/2007, a las 7:01, Juan P. escribió:


#5

aquí estaba el problem!

“ie” => ‘UTF8’

no sabía que se le podía pasar este parámetro
gracias de nuevo

marze


#6

A mi me había pasado lo mismo al principio, es que ese campo es oculto
en el
formulario de google.

Yo uso FireFox y mirando la información de la pagina, donde dice
formulario
fue que me di cuenta del problema.

saludos,
Juan P…


#7

esa api no parece documentada, no?
siendo de google me parece raro

El 22/05/2007, a las 0:56, Juan P. escribió:


#8

Es que en realidad google no tiene un api para el traductor, mi método
se
comunica directamente con el servidor como si estuvieras en su pagina,
como
cualquier usuario.


#9

si si, es lo mismo que he hecho yo, pero con hpricot…
de todas formas como es un request con ajax funciona bien…

El 22/05/2007, a las 1:07, Juan P. escribió: