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




{ 6 comments… read them below or add one }
Hola, muy interesante el código, sin embargo al probarlo, me arroja el siguiente error:
unexpected ‘&’ en $traduc = $json->responseData;
¿alguna sugerencia?
Saludos.
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
Muchas gracias por la colaboración!
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.
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
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