使用谷歌翻译 API 翻译 PHP $string
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4640378/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
translate a PHP $string using google translator API
提问by Toni Michel Caubet
been google'ing for a while how is the best way to translate with google translator in PHP, found very different ways converting URLS, or using Js but i want to do it only with php (or with a very simple solution JS/JQUery)
谷歌搜索了一段时间,在 PHP 中使用谷歌翻译器进行翻译的最佳方式是什么,发现转换 URL 或使用 Js 的方式非常不同,但我只想使用 php(或使用非常简单的解决方案 JS/JQUery)
example:
例子:
//hopefully with $from_lan and $to_lan being like 'en','de', .. or similar
function translate($from_lan, $to_lan, $text){
// do
return $translated_text;
}
can you give me a clue? or maybe you already have this function..
你能给我一个线索吗?或者你可能已经有了这个功能..
my intention it's to use it only for the languages i have not already defined (or keys i haven't defined), that's why i wan it so simple, will be only temporal..
我的意图是仅将它用于我尚未定义的语言(或我尚未定义的键),这就是为什么我希望它如此简单,只会是暂时的..
EDIT
编辑
thanks for your replies we are now trying this soulutions:
感谢您的回复,我们现在正在尝试此解决方案:
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;
}
}
(there was a extra 'g' on variables for lang... anyway)
(lang 的变量上有一个额外的“g”......无论如何)
it returns: works now :)
它返回:现在工作:)
i don't really understand much the function, so any idea why is not acepting the object? (now i do)
我不太了解这个功能,所以知道为什么不接受这个对象吗?(现在我做)
OR:
或者:
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;
}
And this one looks great but it doesn't even gives me an error, the page won't load (error_report(1) :S)
这个看起来不错,但它甚至没有给我一个错误,页面不会加载(error_report(1):S)
thanks in advance!
提前致谢!
采纳答案by Savetheinternet
I haven't tested this yet, but try:
我还没有测试过,但请尝试:
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: Fixed, tested and works.
编辑:固定,测试和工作。
回答by hadiya vipul
I have new solution for this.. Because last solution need new version and some fetched other issue.
我对此有新的解决方案.. 因为最后一个解决方案需要新版本,而一些解决了其他问题。
$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.
I hope is very helpful in PHP
我希望对 PHP 很有帮助
回答by codealchemist
Want to use Google Translate API in PHP, you would need to insert "google/cloud-translate" and "google/apiclient" in your composer file, run composer update and call translate method after creating an object of the following class:
想要在 PHP 中使用 Google Translate API,您需要在您的 Composer 文件中插入“google/cloud-translate”和“google/apiclient”,在创建以下类的对象后运行 composer update 并调用 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;
}
}
}
回答by hellork
To get samples that work, view the README.md files that come with installation
(after running composer require google/cloud-translate
).
要获得有效的示例,请查看安装随附的 README.md 文件(运行后composer require google/cloud-translate
)。
This page comes up number one in search, so it was necessary to provide an update. Even Google's own translating text (basic) PHP examplesdidn't work for me.
此页面在搜索中排名第一,因此有必要提供更新。甚至Google 自己的翻译文本(基本)PHP 示例也不适合我。
As of 2020, this returned quick results via web browser query strings. Consider the sanitizing user inputif this is to be deployed as part of some front-facing application or website.
截至 2020 年,这将通过 Web浏览器查询字符串快速返回结果。如果要将其部署为某些前端应用程序或网站的一部分,请考虑清理用户输入。
<?php
require 'vendor/autoload.php';
use Google\Cloud\Translate\V2\TranslateClient;
$txt = $_GET["q"];
$src = $_GET["s"];
$targ = $_GET["t"];
$translate = new TranslateClient([
'key' => 'Your API Key Here'
]);
// Translate text from english to french.
$result = $translate->translate($txt, [
'source' => $src,
'target' => $targ,
]);
echo $result['text'];