2011-01-09 5 views
12

был google'ing какое-то время, как лучший способ перевести с помощью переводчика google в PHP, нашел самые разные способы преобразования URLS или использования Js, но я хочу сделать это только с PHP (или с очень простым решением JS/JQuery)

пример:

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

// do 

return $translated_text; 

} 

вы можете дать мне ключ? или, возможно, у вас уже есть эта функция.

мое намерение использовать его только для языков, которые я еще не определил (или ключей, которые я еще не определил), поэтому я так просто проработал, будет только временным ..

EDIT

спасибо за ваши ответы мы сейчас пытаемся это 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; 

}

(там был дополнительный 'г' на вар iables для Ланга ... в любом случае)

возвращается: теперь работает :)

я не очень понимает, много функций, поэтому любая идея, почему не acepting объекта? (Теперь я делаю)

ИЛИ:

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

И это выглядит здорово, но она даже не дает мне ошибку, страница не загружается (error_report (1): S)

благодарим заранее!

+0

json_decode возвращает объект, а не массив. Таким образом, вам нужно будет выполнить '$ json-> responseData-> translText', а не' $ json ['responseData'] ['translationText'] ', который теперь я вижу, что вы получили ниже. – Phoenix

ответ

11

Я не проверял этого, но попробовать:

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: Фиксированный, протестирована и работает.

+0

большое спасибо! обновил вопрос с помощью вашего кода (была ошибка в пометке) и объяснила ошибку :(но мы можем заставить ее работать именно то, что мне нужно! и конечно полезно для многих других –

+0

Я исправил ее и отредактировал мой код. – Savetheinternet

+0

Я получаю сообщение об ошибке Предупреждение: file_get_contents() [function.file-get-contents]: Не удалось найти оболочку «https» - вы забыли включить ее при настройке PHP? в D: \ translate.php on line 166 Внимание: file_get_contents (https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=Translate&langpair=auto|es) [function.file-get-contents]: не удалось открыть stream: Нет такого файла или каталога в D: \ translate.php в строке 166 Примечание: попытка получить свойство не-объекта в D: \ translate.php в строке 167 Примечание: попытка получить свойство не объекта в D: \ translate.php on line 167 – Smith