首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不被阻止的情况下将免费的google translate api与codeigniter集成?

如何在不被阻止的情况下将免费的google translate api与codeigniter集成?
EN

Stack Overflow用户
提问于 2019-05-20 16:54:20
回答 2查看 4.4K关注 0票数 1

我试图集成谷歌翻译Api与codeigniter,一开始它工作,但在几个请求后,我得到了这个错误302 Moved,它似乎服务器阻止了我的ip地址。

代码语言:javascript
运行
复制
<?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;
    }
}
代码语言:javascript
运行
复制
$trans = new GoogleTranslate();
$result = $trans->translate($source, $target, $text);

我使用一个数组,其中包含许多需要翻译的文本。如何在不被屏蔽的情况下使用Google translate Api?

EN

回答 2

Stack Overflow用户

发布于 2019-05-31 20:36:26

使用官方谷歌翻译API,请参阅https://cloud.google.com/translate/docs/

每个月谷歌都会免费给你10美元的积分。这意味着每月免费翻译50万个字符。

票数 4
EN

Stack Overflow用户

发布于 2021-06-21 18:54:51

只需要创建一个函数translatetext()

代码语言:javascript
运行
复制
function translatetext($text){
    $curlSession = curl_init(); 
    curl_setopt($curlSession, CURLOPT_URL, 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=hi&dt=t&q='.urlencode($text));
    curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curlSession);
    $jsonData = json_decode($response);
    curl_close($curlSession);

    if(isset($jsonData[0][0][0])){
        return $jsonData[0][0][0];
    }else{
        return false;
    }
}

$text = 'Kamla Nehru Nagar';

回声翻译文本($text);

输出:कमलानेहरूनगर

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56217414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档