百度翻译 AP I是百度为开发者提供的翻译服务,只要在您的网站或 APP 里调用百度翻译 API,您的网站或应用就可以实现翻译功能。

百度翻译 API 分为通用翻译 API 和定制化翻译 API,下面是百度给出的介绍:

通用翻译API支持28种语言互译,覆盖中、英、日、韩、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;支持28种语言的语言检测。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言,即可得到相应的翻译结果。任何第三方应用或网站都可以通过使用通用翻译API为用户提供实时优质的多语言翻译服务,提升产品体验。

定制化翻译API是指在通用翻译模型基础上,基于开发者提供的领域数据,通过自适应技术,快速构建的定制化训练模型。定制化翻译API目前支持中英、英中方向,后续逐步支持其他语言方向。开发者使用定制化翻译API可以更好地与您的应用场景相匹配,获得更好的翻译效果。

这里就以通用翻译 API 为例,简单说一下百度翻译 API 的注册和使用。

注册

点击 百度翻译开放平台 进入百度翻译开放平台来申请服务,

百度翻译开放平台

点击立即使用,如果没有登录百度账号的话就需要登录百度账号。按照提示填写个人信息,主要就是邮箱和手机号之类的。接着需要填写服务信息,应用或网站名称可以直接填你的网站名称,如果还没有网站的话可以随便填写,例如 翻译。相关网址可以直接填你的域名,如果没有域名的话就直接填服务器IP。网站或应用简介可以随便填。服务器地址可以填你的服务器IP,如果是APP的话可以不用填写,如果填写了服务器地址后就只有填写的服务器IP才能调用百度翻译。填写完成后提交申请,注册完成。

使用

百度翻译 API 是通过发送 get 请求或 post 请求来调用的,所以只要能发送这两种请求的语言都可以使用百度翻译 API,因为我对 PHP 比较熟,所以这里就用 PHP 来掩饰。

下面是请求地址

通用翻译 API HTTP地址:

https://api.fanyi.baidu.com/api/trans/vip/translate

通用翻译 API HTTPS地址:

https://fanyi-api.baidu.com/api/trans/vip/translate

申请完成后会获得一个 APP ID和密钥,发送翻译请求的时候需要用来验证身份,下面是需要发送的信息:

字段名必填参数说明
q请求翻译query,也就是要翻译的内容
from翻译源语言,设置为auto可自动检测
to译文语言,不能设置为auto
appidAPP ID,可以在管理控制台查看
salt随机数,随便生成一个随机数就可以
sign签名,appid+q+salt+密钥 的MD5值

下面就用 PHP 来掩饰一下:

PHP代码:

<?php

const APP_ID = '20171210050153715';
const API_KEY = 'misterma.com';

$q = 'Are you OK';  // 要翻译的内容
$from = 'auto';  // 原文语言(自动检测)
$to = 'zh';  // 译文语言(中文)

// 生成一个随机数
$salt = mt_rand(1111, 9999);

// 下面生成签名
$sign = APP_ID . $q . $salt . API_KEY;
$sign = md5($sign);

// 要发送的数据
$submitData = array(
    'q' => $q,
    'from' => $from,
    'to' => $to,
    'appid' => APP_ID,
    'salt' => $salt,
    'sign' => $sign
);

// 下面使用 curl 发送 POST 请求
// 初始化 curl
$ch = curl_init('https://fanyi-api.baidu.com/api/trans/vip/translate');
// 通过字符串的方式返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 设置 POST 请求
curl_setopt($ch, CURLOPT_POST, true);
// 要发送的数据
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($submitData));
// 设置请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
// 超时为 15s
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
// 发送
$result = curl_exec($ch);
// 获取错误信息
$error = curl_error($ch);
// 关闭 curl
curl_close($ch);

// 如果出错
if (!$result) {
    // 输出错误信息,不再往下执行
    exit($error);
}

// 把百度服务器返回的 JSON 字符串转换为对象
$result = json_decode($result);

// 翻译出错
if (isset($result->error_code) && isset($result->error_msg)) {
    // 输出错误码和错误信息,不再往下执行
    exit($result->error_code . $result->error_msg);
}

// 下面循环输出每一行的原文和译文
foreach ($result->trans_result as $val) {
    // 输出原文
    echo $val->src . "\n";
    // 输出 译文
    echo $val->dst . "\n";
}

我上面的原文语言使用的是 auto ,也就是自动检测,译文语言是 zh 中文。

翻译源语言和译文语言需要使用语言简写,下面是语言简写:

语言简写名称
auto自动检测
zh中文
en英语
yue粤语
wyw文言文
jp日语
fra法语
spa西班牙语
th泰语
ara阿拉伯语
ru俄语
pt葡萄牙语
de德语
it意大利语
el希腊语
nl荷兰语
pl波兰语
bul保加利亚语
est爱沙尼亚语
dan丹麦语
fin芬兰语
cs捷克语
rom罗马尼亚语
slo斯洛文尼亚语
swe瑞典语
hu匈牙利语
cht繁体中文
vie越南语

翻译完成后会返回一个 JSON 数据,下面是参数说明:

字段名描述
from翻译源语言
to译文语言
trans_result翻译结果,trans_result里包含原文和译文
src原文
dst译文

下面是返回的 JSON:

JSON:

{
    "from": "en",
    "to": "zh",
    "trans_result": [
        {
            "src": "Are you ok",
            "dst": "你还好吗?"
        }
    ]
}

因为这个 JSON 只是一个字符串,如果要操作的话需要转换为 PHP 对象,有关 PHP 操作 JSON 的方法可以看 PHP 操作 JSON 格式数据

如果翻译发生错误也会返回一个 JSON,其中就包含错误码,下面是错误码说明:

错误码含义解决方法
52000成功
52001请求超时重试
52002系统错误重试
52003未授权用户检查您的 appid 是否正确,或者服务是否开通
54000必填参数为空检查是否少传参数
54001签名错误请检查您的签名生成方法
54003访问频率受限请降低您的调用频率
54004账户余额不足请前往管理控制平台为账户充值
54005长query请求频繁请降低长query的发送频率,3s后再试
58000客户端IP非法检查个人资料里填写的 IP地址 是否正确,可前往管理控制平台修改
58001译文语言方向不支持检查译文语言是否在语言列表里

下面是请求发生错误时返回的 JSON:

JSON:

{
    "error_code": "58000",
    "error_msg": "INVALID_CLIENT_IP",
    "data": {
        "client_ip": "38.128.114.146"
    }
}

根据错误码来定位错误,客户端IP非法。

价格说明

通用翻译 API 每月提供 200 万 字符免费额度,超出后需要按照字符数收费。

当月翻译字符数 ≤ 200 万,当月免费。

超过 200 万 字符,按照 49 元 人民币/百万字符,支付当月全部翻译字符数费用。

字符数以翻译的源语言字符长度为标准计算。一个汉字,英文字母,标点符号等,均计为一个字符。注:空格、html 标签等均计入在内。

相关文章: