如何将免费的 google translate api 与 codeigniter

我正在尝试将 Google translate Api 与 codeigniter 集成,它首先可以工作,但在几次请求后我收到此错误302 Moved,似乎服务器阻止了我的 IP 地址。


<?php


class GoogleTranslate

{

    public static function translate($source, $target, $text)

    {


        $response = self::requestTranslation($source, $target, $text);         

        $translation = self::getSentencesFromJSON($response);

        return $translation;

    }


    protected static function requestTranslation($source, $target, $text)

    {       

        $url = "https://translate.google.com/translate_a/single?client=at&dt=t&dt=ld&dt=qca&dt=rm&dt=bd&dj=1&hl=es-ES&ie=UTF-8&oe=UTF-8&inputm=2&otf=2&iid=1dd3b944-fa62-4b55-b330-74909a99969e";


        $fields = array(

            'sl' => urlencode($source),

            'tl' => urlencode($target),

            'q' => urlencode($text)

        );


        $fields_string = "";

        foreach ($fields as $key => $value) {

            $fields_string .= $key . '=' . $value . '&';

        }

        rtrim($fields_string, '&');       

        $ch = curl_init();       

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_POST, count($fields));

        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        curl_setopt($ch, CURLOPT_USERAGENT, 'AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone TRANSLATE_OPM5_TEST_1');

       $result = curl_exec($ch);

        curl_close($ch);

        return $result;

    }

        protected static function getSentencesFromJSON($json)

    {

        $sentencesArray = json_decode($json, true);

        $sentences = "";


        foreach ($sentencesArray["sentences"] as $s) {

            $sentences .= isset($s["trans"]) ? $s["trans"] : '';

        }


        return $sentences;

    }

}


我使用一个包含许多应该翻译的文本的数组。如何在不被屏蔽的情况下使用 Google 翻译 Api?


呼唤远方
浏览 281回答 2
2回答

jeck猫

使用官方谷歌翻译 API,见https://cloud.google.com/translate/docs/Google 每个月都会免费为您提供 10 美元的信用额度。这意味着每月免费翻译 500 000 个字符。

智慧大石

只需要创建一个函数 translatetext()function translatetext($text){&nbsp; &nbsp; $curlSession = curl_init();&nbsp;&nbsp; &nbsp; curl_setopt($curlSession, CURLOPT_URL, 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=hi&dt=t&q='.urlencode($text));&nbsp; &nbsp; curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);&nbsp; &nbsp; curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);&nbsp; &nbsp; $response = curl_exec($curlSession);&nbsp; &nbsp; $jsonData = json_decode($response);&nbsp; &nbsp; curl_close($curlSession);&nbsp; &nbsp; if(isset($jsonData[0][0][0])){&nbsp; &nbsp; &nbsp; &nbsp; return $jsonData[0][0][0];&nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }}$text = '卡姆拉尼赫鲁纳加尔';回声翻译文本($文本);输出:कमलानेहरूनगर
打开App,查看更多内容
随时随地看视频慕课网APP