Forum: Rails-ES Caracteres especiales y Net::HTTP

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Marze (Guest)
on 2007-05-20 00:57
(Received via mailing list)
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
Juan P. (Guest)
on 2007-05-20 01:07
(Received via mailing list)
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.
Juan P. (Guest)
on 2007-05-21 09:02
(Received via mailing list)
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..
Marze (Guest)
on 2007-05-22 01:57
(Received via mailing list)
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ó:
Marze (Guest)
on 2007-05-22 02:12
(Received via mailing list)
aquí estaba el problem!

"ie" => 'UTF8'

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

marze
Juan P. (Guest)
on 2007-05-22 02:57
(Received via mailing list)
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..
Marze (Guest)
on 2007-05-22 03:01
(Received via mailing list)
esa api no parece documentada, no?
siendo de google me parece raro

El 22/05/2007, a las 0:56, Juan P. escribió:
Juan P. (Guest)
on 2007-05-22 03:09
(Received via mailing list)
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.
Marze (Guest)
on 2007-05-22 03:13
(Received via mailing list)
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ó:
This topic is locked and can not be replied to.