перевести строку PHP $ с помощью API переводчика Google - PullRequest
12 голосов
/ 09 января 2011

некоторое время гуглил, как лучше всего переводить с помощью гугл переводчика в PHP, нашел очень разные способы конвертации URL-адресов или использования 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;

}

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

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

РЕДАКТИРОВАТЬ

спасибо за ваши ответы, мы сейчас пытаемся это решение:

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;

}

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

он возвращает: работает сейчас:)

Я не очень хорошо понимаю функцию, поэтому есть идеи, почему не принимается объект?(теперь я делаю)

ИЛИ:

    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)

спасибо заранее!

Ответы [ 2 ]

11 голосов
/ 09 января 2011

Я еще не проверял это, но попробуйте:

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

РЕДАКТИРОВАТЬ: Исправлено, проверено и работает.

2 голосов
/ 24 августа 2018

У меня есть новое решение для этого .. Потому что последнее решение нуждается в новой версии и некоторые другие проблемы.


    $text = 'Test new message only.';
    $apiKey = '<past your google api key here>';
    $url = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source=en&target=fr';
    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($handle);
    $responseDecoded = json_decode($response, true);

    curl_close($handle);

    print_r($responseDecoded['data']['translations'][0]['translatedText']);
    die;

    //expected output
     Testez le nouveau message uniquement.

Я надеюсь, что это очень полезно в PHP

...