curl — перевести значение массива PHP с помощью API переводчика Google

Я работаю над переводом текста через google translate api. Мне нужно перевести данные на английском языке из базы данных на другой язык, например на японский, а также сохранить другой язык в базе данных.
Прямо сейчас я посылаю каждую строку в Google Translate API, чтобы получить вывод на другом языке. Но это занимает очень много времени, и из-за ограничения нескольких запросов я не могу перевести все данные.

Итак, мой вопрос, могу ли я перевести весь массив в одном запросе, используя Google переводчик API.

Прямо сейчас я использую код ниже:

for($mn=0;$mn<count($languageFieldData);$mn++)
{
$field = $languageFieldData[$mn]['field'];

$newVal = $leadQuery[0][$field];
if(!empty($newVal))
{
//$leadQuery['ko'][0][$field]   = Translate($newVal,'ko');
$leadQuery['ja'][0][$field] = Translate($newVal,'ja');
//$leadQuery['zh-CN'][0][$field]    = Translate($newVal,'zh-CN');
}
$newVal = "";
}

function curl($url,$params = array(),$is_coockie_set = false)
{
if(!$is_coockie_set)
{
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init ($url);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
}
$str = '';
$str_arr= array();
foreach($params as $key => $value)
{
$str_arr[] = urlencode($key)."=".urlencode($value);
}
if(!empty($str_arr))
$str = '?'.implode('&',$str_arr);
$Url = $url.$str;
$ch = curl_init ($Url);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec ($ch);
return $output;
}
function Translate($word,$conversion)
{
$word = urlencode($word);
$url = 'http://translate.google.com/translate_a/t?client=t&text='.$word.'&hl=en&sl=en&tl='.$conversion.'&ie=UTF-8&oe=UTF-8&multires=1&otf=1&ssel=3&tsel=3&sc=1';
$name_en = curl($url);
$name_en = explode('"',$name_en);
return  $name_en[1];
}

2

Решение

Краткий ответ: нет, вы не можете получить его по одному запросу. RESTful API [1] определяет только методы для получения строки символов.

Но я не вижу смысла в необходимости такой функции, потому что вы можете определить свой собственный метод, который заключает в себе «тяжелую работу» по переводу массива строк.

Если вы хотите справиться с ограничением квоты по умолчанию, равным 100 запросам / секундам / пользователям, вы всегда можете поднять ограничение или добавить некоторую логику в свой сценарий, чтобы не запускать более X запросов в секунду.

[1] https://cloud.google.com/translate/v2/using_rest

0

Другие решения

Я решил это. Я преобразовал массив в HTML с помощью Div и его уникального id.Google переводчик не переводит HTML вкладки и атрибуты. Он будет переводить только содержимое внутри DIV.

0

По вопросам рекламы [email protected]