web-dev-qa-db-ja.com

Google翻訳APIを使用してPHP $ stringを翻訳する

しばらくの間グーグルで翻訳してきましたが、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;

}

(langの変数に余分な「g」がありました...とにかく)

それは戻ります:今動作します:)

私はその機能をあまり理解していないので、なぜオブジェクトを受け入れないのか考えてみてください。 (今私がやります)

または:

    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)

前もって感謝します!

12

私はまだこれをテストしていませんが、試してみてください:

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

編集:修正、テスト、動作します。

11
Savetheinternet

私はこれに対する新しい解決策を持っています。最後の解決策は新しいバージョンを必要とし、いくつかは他の問題をフェッチしたからです。


    $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で非常に役立つことを願っています

2
hadiya vipul