Foros del Web » Programando para Internet » PHP »

error en función para traducción usando motor Google

Estas en el tema de error en función para traducción usando motor Google en el foro de PHP en Foros del Web. Hola muy buenas, he hecho una función en php para tradución de textos utilizando el motor de google tranlator. Mi código es este... Código: function ...
  #1 (permalink)  
Antiguo 10/05/2010, 04:54
 
Fecha de Ingreso: abril-2007
Mensajes: 28
Antigüedad: 17 años
Puntos: 0
Hola muy buenas, he hecho una función en php para tradución de textos utilizando el motor de google tranlator. Mi código es este...

Código:
function traducir($text){
/* 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|ca';
// 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);
   	    return $traduccion;
}

Mi problema es el siguiente...cuando el texto es muy largo (Mayor de 1778 caracteres) me tira 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

Estas lineas 156 y 157 son estas:
$traduc = $json->responseData;
$text = $traduc->translatedText;

Alguién sabe a que se puede deber este error...

Agradecería muchísimo si alguién sabe que está pasando...

¿Alguna idea de por qué se produce este error?:

Notice: Trying to get property of non-object en la linea donde aparece el reponse data.

Última edición por GatorV; 12/05/2010 a las 08:35
  #2 (permalink)  
Antiguo 11/05/2010, 09:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: error en función para traducción usando motor Google

Es un Notice o sea una notificación, te esta diciendo que estas tratando de leer una propiedad de un objeto que no es objeto.

El problema puede ser porque json_decode no pudo decodificar los datos o la cadena era muy larga.

Saludos.
  #3 (permalink)  
Antiguo 11/05/2010, 10:54
 
Fecha de Ingreso: abril-2007
Mensajes: 28
Antigüedad: 17 años
Puntos: 0
Cita:
Iniciado por GatorV Ver Mensaje
Es un Notice o sea una notificación, te esta diciendo que estas tratando de leer una propiedad de un objeto que no es objeto.

El problema puede ser porque json_decode no pudo decodificar los datos o la cadena era muy larga.

Saludos.
Para cadenas con menos de 1778 caracteres funciona perfectamente, pero el poroblema viene en cadenas superiores a ese tamaño. Y la verdad es que no se si puedo hacerlo de otra forma.

Hay otra forma de decodificar esos datos que no sea json_decode???
Alguna función para hacerlo???
Alguna posible solución que se os pueda ocurrir???

Muchas gracias por la ayuda!!!

Dónde pensais que puede estar el error...

en el json_decode()

o en el urlencode()

Al parecer el error puede venir por la longitud de la cadena, ¿pero no se exactamente dónde se origina el mismo?

¿Alguna idea?

Última edición por GatorV; 12/05/2010 a las 08:35

Etiquetas: google, motor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:10.