代码之家  ›  专栏  ›  技术社区  ›  Martin JoneÅ¡

PHP谷歌翻译API在一个POST请求中包含多个文本字符串

  •  0
  • Martin JoneÅ¡  · 技术社区  · 7 年前

    google Sitepoint ,可以在一个请求中翻译多个文本字符串。然而,当我试图翻译多个字符串时,结果是用最后一个字符串替换了第一个字符串。

        $handle = curl_init();
    
        if (FALSE === $handle)
           throw new Exception('failed to initialize');
    
    curl_setopt($handle, CURLOPT_URL,'https://www.googleapis.com/language/translate/v2');
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($handle, CURLOPT_POSTFIELDS, array('key'=> $apiKey, 'q' => $heading, 'q' => $content, 'source' => $sl, 'target' => $hl));
    curl_setopt($handle,CURLOPT_HTTPHEADER,array('X-HTTP-Method-Override: GET'));
    $response = curl_exec($handle);
    $responseDecoded = json_decode($response, true);
    $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    curl_close($handle);
    if($responseCode != 200) {
        header("HTTP/1.0 404 Not Found");
        include_once("ErrorDocument/404.html");
        exit();
    }else{
        $heading = $responseDecoded['data']['translations'][0]['translatedText'];
        $content = $responseDecoded['data']['translations'][1]['translatedText'];
    }
    

    2 回复  |  直到 7 年前
        1
  •  3
  •   Martin JoneÅ¡    7 年前
        $handle = curl_init();
    
    if (FALSE === $handle)
       throw new Exception('failed to initialize');
    
    curl_setopt($handle, CURLOPT_URL,'https://www.googleapis.com/language/translate/v2');
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    $data = array('key' => $apiKey,
                    'q' => array($heading,$content),
                    'source' => $sl,
                    'target' => $hl);
    curl_setopt($handle, CURLOPT_POSTFIELDS, preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', http_build_query($data)));
    curl_setopt($handle,CURLOPT_HTTPHEADER,array('X-HTTP-Method-Override: GET'));
    $response = curl_exec($handle);
    $responseDecoded = json_decode($response, true);
    $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    curl_close($handle);
    if($responseCode != 200) {
        header("HTTP/1.0 404 Not Found");
        include_once("ErrorDocument/404.html");
        echo 'Fetching translation failed! Server response code:' . $responseCode . '<br>';
        echo 'Error description: ' . $responseDecoded['error']['errors'][0]['message'] . '<br>';
        echo 'Please contact website administrator';
        exit();
    }else{
        $heading = $responseDecoded['data']['translations'][0]['translatedText'];
        $content = $responseDecoded['data']['translations'][1]['translatedText'];
    }
    

    这对我来说很有效。找到了解决方案 out there 。希望这对未来的任何人都有帮助。

        2
  •  0
  •   Falselight    6 年前