通用翻译
百度 官方文档
支持28种语言实时互译,覆盖中、英、日、韩、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;同时支持28种语言的语言检测
基本说明:
接口地址:https://fanyi-api.baidu.com/api/trans/vip/translate
返回格式:json
请求方式:post
请求示例:http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=xx&salt=xx&sign=xx
请求参数说明:
名称 类型 必填 说明
q TEXT 必填 请求翻译query
from TEXT 必填 翻译源语言
to TEXT 必填 译文语言
appid INT 必填 APP ID
salt INT 必填 随机数
sign TEXT 必填 签名
返回参数说明:
名称 类型 说明
from TEXT 翻译源语言
to TEXT 译文语言
trans_result MIXED LIST 翻译结果
src TEXT 原文
dst TEXT 译文
JSON返回示例:
{
	"from": "en",
	"to": "zh",
	"trans_result": [{
		"src": "apple",
		"dst": "苹果"
	}]
}
服务级错误码参照
错误码 说明
52000 成功
52001 请求超时
52002 系统错误
52003 未授权用户
54000 必填参数为空
54001 签名错误
54003 访问频率受限
54004 账户余额不足
54005 长query请求频繁
58000 客户端IP非法
58001 译文语言方向不支持
58002 服务当前已关闭
完整教学代码示例
<?php
/**
 * @file baidu_transapi.php
 * @author mouyantao(mouyantao@baidu.com)
 * @date 2015/06/23 14:32:18
 * @brief
 *
 **/

define("CURL_TIMEOUT",   10);
define("URL",            "http://api.fanyi.baidu.com/api/trans/vip/translate");
define("APP_ID",         "YOUR APP ID"); //替换为您的APPID
define("SEC_KEY",        "YOUR SEC KEY");//替换为您的密钥

//翻译入口
function translate($query, $from, $to)
{
    $args = array(
        'q' => $query,
        'appid' => APP_ID,
        'salt' => rand(10000,99999),
        'from' => $from,
        'to' => $to,

    );
    $args['sign'] = buildSign($query, APP_ID, $args['salt'], SEC_KEY);
    $ret = call(URL, $args);
    $ret = json_decode($ret, true);
    return $ret;
}

//加密
function buildSign($query, $appID, $salt, $secKey)
{/*{{{*/
    $str = $appID . $query . $salt . $secKey;
    $ret = md5($str);
    return $ret;
}/*}}}*/

//发起网络请求
function call($url, $args=null, $method="post", $testflag = 0, $timeout = CURL_TIMEOUT, $headers=array())
{/*{{{*/
    $ret = false;
    $i = 0;
    while($ret === false)
    {
        if($i > 1)
            break;
        if($i > 0)
        {
            sleep(1);
        }
        $ret = callOnce($url, $args, $method, false, $timeout, $headers);
        $i++;
    }
    return $ret;
}/*}}}*/

function callOnce($url, $args=null, $method="post", $withCookie = false, $timeout = CURL_TIMEOUT, $headers=array())
{/*{{{*/
    $ch = curl_init();
    if($method == "post")
    {
        $data = convert($args);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_POST, 1);
    }
    else
    {
        $data = convert($args);
        if($data)
        {
            if(stripos($url, "?") > 0)
            {
                $url .= "&$data";
            }
            else
            {
                $url .= "?$data";
            }
        }
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(!empty($headers))
    {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    if($withCookie)
    {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
    }
    $r = curl_exec($ch);
    curl_close($ch);
    return $r;
}/*}}}*/

function convert(&$args)
{/*{{{*/
    $data = '';
    if (is_array($args))
    {
        foreach ($args as $key=>$val)
        {
            if (is_array($val))
            {
                foreach ($val as $k=>$v)
                {
                    $data .= $key.'['.$k.']='.rawurlencode($v).'&';
                }
            }
            else
            {
                $data .="$key=".rawurlencode($val)."&";
            }
        }
        return trim($data, "&");
    }
    return $args;
}/*}}}*/
?>
#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>

int main(void)
{
  CURL *curl;
  CURLcode res;
 
  curl = curl_easy_init();
  if(curl) {
    char myurl[1000] = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
    char *appid = "myAppid";    //replace myAppid with your own appid
    char *q = "apple";          //replace apple with your own text to be translate, ensure that the input text is encoded with UTF-8!
    char *from = "en";          //replace en with your own language type of input text
    char *to = "zh";            //replace zh with your own language type of output text
    char salt[60];
    int a = rand();
    sprintf(salt,"%d",a);
    char *secret_key = "mySecretKey";   //replace mySecretKey with your own mySecretKey
    char sign[120] = "";
    strcat(sign,appid);
    strcat(sign,q);
    strcat(sign,salt);
    strcat(sign,secret_key);
    printf("%s
",sign);
    unsigned char md[16];
    int i;
    char tmp[3]={''},buf[33]={''};
    MD5((unsigned char *)sign,strlen((unsigned char *)sign),md);
    for (i = 0; i < 16; i++){
        sprintf(tmp,"%2.2x",md[i]);
        strcat(buf,tmp);
    }
    printf("%s
",buf);
    strcat(myurl,"appid=");
    strcat(myurl,appid);
    strcat(myurl,"&q=");
    strcat(myurl,q);
    strcat(myurl,"&from=");
    strcat(myurl,from);
    strcat(myurl,"&to=");
    strcat(myurl,to);
    strcat(myurl,"&salt=");
    strcat(myurl,salt);
    strcat(myurl,"&sign=");
    strcat(myurl,buf);
    printf("%s
",myurl);
    curl_easy_setopt(curl, CURLOPT_URL, myurl);
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s
",
              curl_easy_strerror(res));
 
    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  return 0;
}