2011-01-09 33 views
12

he estado buscando por un tiempo cómo es la mejor manera de traducir con traductor de Google en PHP, encontré formas muy diferentes de convertir URL, o usar Js, pero quiero hacerlo solo con php (o con una solución muy simple JS/jQuery)

ejemplo:

//hopefully with $from_lan and $to_lan being like 'en','de', .. or similar 
function translate($from_lan, $to_lan, $text){ 

// do 

return $translated_text; 

} 

me puede dar una pista? o tal vez ya tiene esta función ...

mi intención es usarla solo para los idiomas que no he definido aún (o claves que no he definido), es por eso que lo quiero tan simple, será solo temporal ..

EDITAR

gracias por sus respuestas que estamos tratando esta Soulutions:

function auto_translate($from_lan, $to_lan, $text){ 
// do 


$json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
$translated_text = $json->responseData->translatedText; 


return $translated_text; 

}

(había una 'g' extra en var iables de lang ... de todos modos)

vuelve: funciona ahora :)

Realmente no entiendo mucho la función, por lo que cualquier idea de por qué no se acepting el objeto? (Ahora yo)

O:

function auto_translate($from_lan, $to_lan, $text){ 
    // do 

// $json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
// $translated_text = $json['responseData']['translatedText']; 
    error_reporting(1); 
    require_once('GTranslate.php'); 
    try{ 
     $gt = new Gtranslate(); 
     $translated_text = $gt->english_to_german($text); 

    } catch (GTranslateException $ge) 
    { 
      $translated_text= $ge->getMessage(); 
    } 


    return $translated_text; 
} 

Y éste se ve muy bien, pero ni siquiera me da un error, la página no se carga (error_report (1): S)

gracias de antemano!

+0

json_decode devuelve un objeto, no una matriz. Entonces, tendrías que hacer '$ json-> responseData-> translatedText' en lugar de' $ json ['responseData'] ['translatedText'] ', que ahora veo que tienes debajo. – Phoenix

Respuesta

11

No he probado esto todavía, pero trate:

function translate($from_lan, $to_lan, $text){ 
    $json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan)); 
    $translated_text = $json->responseData->translatedText; 

    return $translated_text; 
} 

EDIT: fijo, probado y funciona.

+0

muchas gracias! actualicé la pregunta con su código (hubo un error de litera) y expliqué el error :(pero podemos hacerlo funcionar, ¡es exactamente lo que necesito! y seguro que es útil para muchos otros –

+0

Lo arreglé y edité mi código. funciona. – Savetheinternet

+0

me sale un error. Advertencia: file_get_contents() [function.file-get-contents]: no se puede encontrar el contenedor "https" - ¿Olvidaste habilitarlo cuando configuraste PHP? en D: \ translate.php en la línea 166 Advertencia: file_get_contents (https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=Translate&langpair=auto|es) [function.file-get-contents]: no se pudo abrir stream: No existe ningún archivo o directorio en D: \ translate.php en la línea 166 Aviso: Intentando obtener la propiedad de no objeto en D: \ translate.php en la línea 167 Aviso: Intentar obtener la propiedad de no objeto en D: \ translate.php en la línea 167 – Smith

Cuestiones relacionadas