Ad
PHP Google Translation API Multiple Text Strings In One POST Request
According to google and Sitepoint, there are possibilities to translate multiple text strings in one request. However when I tried to translate multiple strings, it resulted in replacing the first string by the last one.
$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'];
}
Any ideas?
Ad
Answer
$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'];
}
This works well for me. Found solution out there. Hope this will help anyone in the future.
Ad
source: stackoverflow.com
Related Questions
- → "failed to open stream" error when executing "migrate:make"
- → October CMS Plugin Routes.php not registering
- → OctoberCMS Migrate Table
- → OctoberCMS Rain User plugin not working or redirecting
- → October CMS Custom Mail Layout
- → October CMS - How to correctly route
- → October CMS create a multi select Form field
- → October CMS - Conditionally Load a Different Page
- → How to disable assets combining on development in OctoberCMS
- → October CMS - Radio Button Ajax Click Twice in a Row Causes Content to disappear
- → OctoberCms component: How to display all ID(items) instead of sorting only one ID?
- → In OctoberCMS how do you find the hint path?
- → How to register middlewares in OctoberCMS plugin?
Ad