使用谷歌翻译 API 翻译 PHP $string

发布于 2024-10-11 00:02:23 字数 1639 浏览 7 评论 0原文

一直在谷歌搜索一段时间,在 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)

提前感谢!

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)

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)

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)

thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

ゃ人海孤独症 2024-10-18 00:02:23

我还没有测试过这个,但请尝试:

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

编辑:已修复,经过测试并且有效。

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.

默嘫て 2024-10-18 00:02:23

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


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

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

锦爱 2024-10-18 00:02:23

想要在 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;
        }
    }
}

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

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;
        }
    }
}
听不够的曲调 2024-10-18 00:02:23
    <!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 


 ?>
    <!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 


 ?>
書生途 2024-10-18 00:02:23

使用 Google 翻译 API 翻译任何字符串

第 1 步: 进入控制台

第 2 步: 创建项目并打开

第 3 步: 在 API 库中搜索云翻译

搜索翻译 api

步骤4:从显示的列表中单击云翻译API。

选择 api

第 5 步: 启用 API

enable api

第 6 步: 从 API 和 API 创建 API 密钥服务

创建-credentials

第 7 步:复制生成的 API 密钥:

api-key


现在,让我们转到使用 Google Translate API 的 PHP 脚本

我们正在使用 Translate-v2 API,接受以下主要参数:

  • q:输入文本

  • source:源语言

  • target:目标语言


$inputText = 'Test input message';
$source = 'en'; //English
$target = 'es'; // Spanish
$encodedInputText = rawurlencode($inputText);
$googleApiKey = '<paste the google api key here>';

$url = "https://www.googleapis.com/language/translate/v2?key=$googleApiKey&q=$encodedInputText&source=$source&target=$target";

$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']);

或者,您也可以使用 Postman 执行此操作并生成curl代码:

generate-curl-code-postman

Translate any string using Google translator API

Step 1: Go to console

Step 2: Create a project and open it

Step 3: Search cloud translation in API library

Search translation api

Step 4: Click on Cloud Translation API from the displayed list.

choose api

Step 5: Enable API

enable api

Step 6: Create API Key from APIs & Services

Create-credentials

Step 7: Copy the generated API key:

api-key


Now, lets move to the PHP script for using Google Translate API

We are using Translate-v2 API, which accepts following primary parameters:

  • q: the input text

  • source: the source language

  • target: the target language


$inputText = 'Test input message';
$source = 'en'; //English
$target = 'es'; // Spanish
$encodedInputText = rawurlencode($inputText);
$googleApiKey = '<paste the google api key here>';

$url = "https://www.googleapis.com/language/translate/v2?key=$googleApiKey&q=$encodedInputText&source=$source&target=$target";

$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']);

Alternatively, you can also do this using Postman and generate curl code:

generate-curl-code-postman

陌伤ぢ 2024-10-18 00:02:23

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

该页面在搜索中排名第一,因此有必要提供更新。即使是 Google 自己的翻译文本(基本)PHP 示例也不起作用为我。

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

<?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'];

To get samples that work, view the README.md files that come with installation
(after running 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 examples didn't work for me.

As of 2020, this returned quick results via web browser query strings.
Consider the sanitizing user input if this is to be deployed as part of some front-facing application or website.

<?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'];
提笔落墨 2024-10-18 00:02:23

我的解决方案是“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");

My solution is a newly adaption from "Savetheinternet's" function.
It uses php_decode with flag true (JSON will returning associative arrays)

 <?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");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文