14

谷歌搜索了一段时间,在 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”......无论如何)

它返回:现在工作:)

我不太了解这个功能,所以知道为什么不接受这个对象吗?(现在我愿意)

或者:

    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)

提前致谢!

4

6 回答 6

12

我尚未对此进行测试,但请尝试:

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;
}

编辑:已修复、测试和工作。

于 2011-01-09T16:58:55.140 回答
5

我对此有新的解决方案..因为最后一个解决方案需要新版本并且一些获取其他问题。


    $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 很有帮助

于 2018-08-24T08:49:46.900 回答
2

想要在 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;
        }
    }
}
于 2019-10-13T08:10:19.527 回答
1
    <!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 


 ?>
于 2020-10-08T13:46:47.430 回答
0

要获得有效的示例,请查看安装随附的 README.md 文件(运行后composer require google/cloud-translate)。

此页面在搜索中排名第一,因此有必要提供更新。甚至Google 自己的翻译文本(基本)PHP 示例也不适合我。

截至 2020 年,这通过网络浏览器查询字符串返回了快速结果。如果要将其部署为某些前端应用程序或网站的一部分,请考虑清理用户输入。

<?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'];
于 2020-04-26T04:19:37.863 回答
0

我的解决方案是对“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");
于 2021-12-11T06:04:28.687 回答