• Viernes 29 de Marzo de 2024, 14:55

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - zeit009

Páginas: [1]
1
Perl / Problema con Perl utilizando API de google translate
« en: Jueves 31 de Marzo de 2011, 13:58 »
Buenas!

Recientemente he empezado a trabajar con Perl, CGI, etc.... y ando un  poco perdido.

Mi problema es el siguiente: he creado un pequeño formulario para que la gente introduzca un texto, y dicho texto lo quiero traducir llamando a un programa de Perl que lo tengo guardado en /lib/cgi-bin/ que se conecta a Google y utilizando las API de Google Translate me devuelva el resultado.

El formulario es el siguiente (sencillito) y lo he guardado en / var / ww:


1.
Method = post <FORM action="cgi-bin/ApiPerl">
2.
Web Translator
3.
BORDER=0> <TABLE
4.
<TR>
5.
<TD> Introduzca el texto a traducir </ TD>
6.
<TD>
7.
Filas = "3" <TEXTAREA name="textointroducido"> entrada
8.
</ TEXTAREA>
9.

10.
</ TD>
11.
</ TR>
12.

13.
<TR>
14.
<td COLSPAN=2>
15.
Name = "Traducir" <INPUT type="submit" value="traducir">
16.
</ TD>
17.
</ TR>
18.
</ TABLE>
19.
</ FORM>

Comencé a crear el script en Perl que toma la variable "textointroducido" (que es el texto que queremos traducir) y usando las APIs de google translate quiero que me lo devuleva en una variable para mostrarla en una pagina html.

   1.
      use strict;
   2.
      use CGI;
   3.
       
   4.
      my $form = new CGI;
   5.
      my $txt = $form ->param('textointroducido');



En este punto, consigo guardar el texto introducido por el usuario ("textointroducido") en $txt. Ahora mi problema es a la hora de hacer las llamadas Google.


He encontrado un programa escrito en perl que traduce del Inglés al francés (en mi caso yo quiero que traduzca de ingles a español..pero bueno sirve de ejemplo) el problema de este programa es que el texto que queremos traducir es introducido a través de la entrada estándar . Aqui os muestro el codigo

   1.
      #!/usr/bin/perl
   2.
       
   3.
      use REST::Client;
   4.
      use JSON;
   5.
      use HTML::Entities qw(decode_entities);
   6.
       
   7.
       
   8.
      while (1)
   9.
      {
  10.
          print "Please enter English word: ";
  11.
          chop ( $_ = <STDIN>);
  12.
         
  13.
          my $client = REST::Client->new();
  14.
          $client->GET("@de la API de google"); --Lo pongo asi porque no me deja poner la url en el foro
  15.
          $response = $client->responseContent();
  16.
       
  17.
          $json_text = from_json( $response );
  18.
       
  19.
          foreach my $french(@{$json_text->{data}->{translations}})
  20.
          {
  21.
              my %ep_hash = ();
  22.
              $ep_hash{translatedText} = "Translated to French: $french->{translatedText}";
  23.
       
  24.
              # print french
  25.
              while (my($key, $value) = each (%ep_hash))
  26.
              {
  27.
                  print decode_entities($value);
  28.
              }
  29.
          }
  30.
          print "n";
  31.
      }



Bueno, he tratado de integrar el código escrito por mí en este programa de perl y nada. He leído que a lo mejor hay que codificar la variable $txt URI:: Encode para integrarlo en la URL...no sé...he estado leyendo y tampoco se  cómo se haria ..
Bueno, a ver si alguien me puede ayudar o si alguien sabe de alguna manera más fácil de hacer lo que quiero que me lo comente...cualquier comentario o sugerencia es bienvenida.
Gracias!
Un Saludo!

Páginas: [1]