2017-07-25 6 views
0

Nach google und Sitepoint gibt es Möglichkeiten, mehrere Textzeichenfolgen in einer Anfrage zu übersetzen. Wenn ich jedoch versuchte, mehrere Zeichenfolgen zu übersetzen, führte dies dazu, dass die erste Zeichenfolge durch die letzte ersetzt wurde.PHP Google Translation API mehrere Textzeichenfolgen in einer POST-Anfrage

$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']; 
} 

Irgendwelche Ideen?

+0

Sie haben mehrere Tasten "q", die zweite überschreibt die erste. – pokeybit

+0

Probieren Sie ''q' => Array ($ Überschrift, $ Inhalt)' – pokeybit

+0

Pokeybit - Ich habe diese Lösung nicht im Internet gefunden, aber ich werde es versuchen. Danke für den Tipp. EDIT: Nein, gibt nur folgenden Hinweis "Hinweis: Array zu String-Konvertierung" –

Antwort

2
$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']; 
} 

Das funktioniert gut für mich. Gefundene Lösung out there. Ich hoffe, dies wird jedem in der Zukunft helfen.

0

Verwenden Bibliothek GoogleTranslateForFree

„Bibliothek für Übersetzer freie Nutzung von Google. Mit Versuchen, bei einem Fehler und Array-Unterstützung zu verbinden.“