translate a PHP $string using google translator API

前端 未结 5 1863
梦谈多话
梦谈多话 2020-12-08 17:26

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

相关标签:
5条回答
  • 2020-12-08 17:42
        <!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 
    
    
     ?>
    
    0 讨论(0)
  • 2020-12-08 17:48

    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.

    0 讨论(0)
  • 2020-12-08 17:48

    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

    0 讨论(0)
  • 2020-12-08 17:49

    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'];
    
    0 讨论(0)
  • 2020-12-08 17:50

    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;
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题