[英]translate a PHP $string using google translator API
谷歌搜索了一段时间,在 PHP 中使用谷歌翻译器进行翻译的最佳方式是什么,发现转换 URL 或使用 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;
}
(lang 的变量有一个额外的“g”......无论如何)
它返回:现在工作:)
我不太了解这个功能,所以知道为什么不接受这个对象吗? (现在我做)
或者:
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)
提前致谢!
我还没有测试过,但请尝试:
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;
}
编辑:固定,测试和工作。
我对此有新的解决方案.. 因为最后一个解决方案需要新版本,而一些解决了其他问题。
$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 很有帮助
想要在 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;
}
}
}
要获得有效的示例,请查看安装附带的 README.md 文件(在运行composer require google/cloud-translate
)。
此页面在搜索中排名第一,因此有必要提供更新。 甚至Google 自己的翻译文本(基本)PHP 示例也不适合我。
截至 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'];
<!DOCTYPE html>
<html lang="en-US">
<body>
<h1>My Web Page</h1>
<p>Hello everybody!</p>
<p>Translate this page:</p>
<div id="google_translate_element"></div>
<script type="text/javascript">
function googleTranslateElementInit() {
new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');
}
</script>
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<p>You can translate the content of this page by selecting a language in the select box.</p>
</body>
</html>
<?php
?>
我的解决方案是对“Savetheinternet”功能的新改编。 它使用带有标志 true 的 php_decode (JSON 将返回关联数组)
<?php
function translate($SourceLan, $TargetLan, $text)
{
$obj = json_decode(file_get_contents('https://translation.googleapis.com/language/translate/v2?q=' . urlencode($text) . '&source=' . $SourceLan . '&target=' . $TargetLan . '&format=text&key=YOUR_OWN_GOOGLE_API_KEY'), true);
$TranslatedText = $obj['data']['translations']['0']['translatedText'];
return $TranslatedText;
}
echo translate("de", "en", "Hallo Welt");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.