PHP 调用百度翻译 API
百度翻译 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 |
appid | 是 | APP 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 标签等均计入在内。
相关文章:
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/105/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。