Traducir textos en PHP usando la API de Google Translate

by manelgarcia on November 23, 2009

Cómo he comentado anteriormente, estoy realizando un experimento SEO para uno de mis sitios.

La primera de las acciones era crear una herramienta que me agragara juegos flash al sitio web diariamente para generar contenido regularmente y así fidelizar al usuario, ganar en enlaces internos y páginas indexadas.

Y aprovechando que el sitio en cuestión lo tengo disponible en juegos gratis (español), jeux gratuit (francés) y free games (inglés) he añadido una funcionalidad a dicha herramienta para que los textos descriptivos de cada juego los traduzca y así pueda añadir el juego a los otros sitios.

Para traducir dichos textos online con PHP he usado la API de Google translate, os propongo aquí el código que he usado por si a alguien le sirve de ayuda:

/* definimos la URL de la API de Google Translate y metemos en la variable el texto a traducir */
$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.urlencode($text).'&langpair=es|en';
// iniciamos y configuramos curl_init();
		$curl_handle = curl_init();
		curl_setopt($curl_handle,CURLOPT_URL, $url);		     curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
		curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
		$code = curl_exec($curl_handle);
		curl_close($curl_handle);

// la api nos devuelve los resultados en forma de objeto stdClass
// recuperamos los datos y voilà!

		$json = json_decode($code);
		$traduc = $json->responseData;
		$text = $traduc->translatedText;
   	        $traduccion = utf8_decode($text);

¿Te ha interesado el artículo? Que te parece suscribirte a mi RSS! Suscribirse

{ 3 comments… read them below or add one }

Pepe January 4, 2010 at 11:03 pm

Hola, muy interesante el código, sin embargo al probarlo, me arroja el siguiente error:

unexpected ‘&’ en $traduc = $json->responseData;

¿alguna sugerencia?

Saludos.

Pepe January 6, 2010 at 5:15 pm

Con algunas modificaciones logré que funcionara en php4:

function translate($text,$destLang = ‘en’,$srcLang = ‘es’) {

$text = urlencode($text);
$destLang = urlencode( $destLang );
$srcLang = urlencode( $srcLang );

$trans = @file_get_contents( “http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={$text}&langpair={$srcLang}|{$destLang}” );

$translate = explode(’translatedText”:”‘,$trans);
$translate = explode(’”},’,$translate[1]);

echo $translate[0];
}

Saludos

manelgarcia January 17, 2010 at 7:28 pm

Muchas gracias por la colaboración!

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous post:

Next post: