Перевести строку PHP $с помощью API-интерфейса google
был google'ing какое-то время, как лучший способ перевести с помощью переводчика google на PHP, нашел очень разные способы преобразования URLS или использования 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;
}
(добавлен "g" для переменных для lang... в любом случае)
он возвращает: работает сейчас:)
Я действительно мало понимаю эту функцию, поэтому любая идея, почему не воспринимает объект? (теперь я делаю)
ИЛИ:
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)
заблаговременно!
Ответы
Ответ 1
Я еще не тестировал это, но попробую:
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;
}
EDIT: исправлено, проверено и работает.
Ответ 2
У меня есть новое решение для этого.. Потому что последнее решение нуждается в новой версии и некоторые другие проблемы.
$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
Ответ 3
Если вы хотите использовать Google Translate API в PHP, вам нужно вставить "google/cloud-translate" и "google/apiclient" в файл композитора, запустить обновление композитора и вызвать метод translate после создания объекта следующего класса:
<?php
require_once APP_ROOT . '/library/google-api-php-client/src/Google_Client.php';
require_once APP_ROOT . '/library/google-api-php-client/src/contrib/Google_TranslateService.php';
class GoogleTranslator
{
private $developer_key;
const PROVIDER = "google";
const SUCCESS = "success";
const FAILURE = "failure";
const TRANSLATE_SUCCESS_MESSAGE = 'text translation successful';
public function __construct()
{
$this->developer_key = '<DEVELOPER KEY HERE>';
}
public function translate($text, $source_language, $target_language)
{
try {
$client = new \Google_Client();
$client->setApplicationName('Google Translate PHP Starter Application');
$client->setDeveloperKey($this->developer_key);
$service = new \Google_TranslateService($client);
$optional_parameters = array('source' => $source_language);
$translated_text = $service->translations->listTranslations($text, $target_language, $optional_parameters);
return array('translation' => $translated_text['translations'][0]['translatedText'],
'provider' => self::PROVIDER,
'status' => self::SUCCESS,
'message' => self::TRANSLATE_SUCCESS_MESSAGE);
} catch (\Exception $e) {
error_log($e->getMessage() . " FOR GET TRANSLATION CALL", "GOOGLE TRANSLATE API");
$res = array('translation' => '',
'provider' => self::PROVIDER,
'status' => self::FAILURE,
'message' => $e->getMessage());
return $res;
}
}
}
Ответ 4
Если вы хотите использовать Google Translate API в PHP, вам нужно вставить "google/cloud-translate" и "google/apiclient" в файл композитора, запустить обновление композитора и вызвать метод translate после создания объекта следующего класса:
<?php
require_once APP_ROOT . '/library/google-api-php-client/src/Google_Client.php';
require_once APP_ROOT . '/library/google-api-php-client/src/contrib/Google_TranslateService.php';
class GoogleTranslator
{
private $developer_key;
const PROVIDER = "google";
const SUCCESS = "success";
const FAILURE = "failure";
const TRANSLATE_SUCCESS_MESSAGE = 'text translation successful';
public function __construct()
{
$this->developer_key = '<DEVELOPER KEY HERE>';
}
public function translate($text, $source_language, $target_language)
{
try {
$client = new \Google_Client();
$client->setApplicationName('Google Translate PHP Starter Application');
$client->setDeveloperKey($this->developer_key);
$service = new \Google_TranslateService($client);
$optional_parameters = array('source' => $source_language);
$translated_text = $service->translations->listTranslations($text, $target_language, $optional_parameters);
return array('translation' => $translated_text['translations'][0]['translatedText'],
'provider' => self::PROVIDER,
'status' => self::SUCCESS,
'message' => self::TRANSLATE_SUCCESS_MESSAGE);
} catch (\Exception $e) {
error_log($e->getMessage() . " FOR GET TRANSLATION CALL", "GOOGLE TRANSLATE API");
$res = array('translation' => '',
'provider' => self::PROVIDER,
'status' => self::FAILURE,
'message' => $e->getMessage());
return $res;
}
}
}