Traducir textos en PHP usando la API de Google Translate


by manelgarcia on November 23, 2009

in Rescursos

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);

Artículos de Interés

{ 6 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!

Miguel May 11, 2010 at 10:54 am

Hola he probado a utilizar este codigo, y funciona perfectamente, pero cuando le pongo un texto de mas de 1700 caracteres me da el siguiente error:

Notice: Trying to get property of non-object in C:\wamp\www\fapa\lib\php\funciones.php on line 156

Notice: Trying to get property of non-object in C:\wamp\www\fapa\lib\php\funciones.php on line 157

Como digo eso solo es cuando el texto tiene mas de 1700 caracteres….

Sabesi poruqe puede pasar esto, no tengo ni idea.

Muchas gracias.

ingrid May 21, 2010 at 11:52 am

estoy haciendo una pagina sobre un hotel y quiero que me traduzca toda la pagina al idioma que yo quiero , pero este codigo lo pongo en el index??? donde defino las variables ???

Graciass por responder

stockli June 12, 2010 at 10:18 pm

Muchas gracias por el pedacito de codigo, me va a ayudar mucho en una idea que tengo, te mantengo informado. Saludos

pd. Ya probe el codigo, y me funciona a la perfección en las pruebas realizadas

Leave a Comment

Previous post:

Next post: