小编分别写过有道,百度的翻译Demo,个人感觉有这么几个区别:
- 代码量:百度更简洁,有道太冗余;
- 是否收费:有道翻译免费,百度翻译超过一定量是要收费的,所以要验证key;
- 规范性:相比有道翻译,百度翻译API渠道更正规,个人觉得。
申请百度密匙:
既然百度翻译需要验证密匙,我们就有必要先申请账号,获取密匙:
百度翻译开放平台:http://api.fanyi.baidu.com/api/trans/product/index
流程如下:
- 按照提示注册账号,获取 APP ID 和 密钥 ;
- 申请开通通用翻译API服务 ;
- 参考百度翻译提供的通用翻译API技术文档 接入方式,或者参照我下面的Demo 。
Demo:
我的环境是py3,Demo需要补全自己的appid和secretKey,然后直接复制即可运行,一行代码都不缺。
#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8
import http.client
import hashlib
import urllib
import random
import json
from pip._vendor.distlib.compat import raw_input
# 百度appid和密钥需要通过注册百度【翻译开放平台】账号后获得
appid = 'xxxxxx' # 填写你的appid
secretKey = 'xxxxxx' # 填写你的密钥
httpClient = None
myurl = '/api/trans/vip/translate' # 通用翻译API HTTP地址
fromLang = 'auto' # 原文语种
toLang = 'zh' # 译文语种
salt = random.randint(32768, 65536)
# 手动录入翻译内容,q存放
q = raw_input("please input the word you want to translate:")
sign = appid + q + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + \
'&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
# 建立会话,返回结果
try:
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
# response是HTTPResponse对象
response = httpClient.getresponse()
result_all = response.read().decode("utf-8")
result = json.loads(result_all)
print (result)
except Exception as e:
print (e)
finally:
if httpClient:
httpClient.close()
语言列表
源语言语种不确定时可设置为 auto,目标语言语种不可设置为auto。因为对于非常用语种,语种自动检测可能存在误差。
语言简写 | 名称 |
---|---|
auto | 自动检测 |
zh | 中文 |
en | 英语 |
yue | 粤语 |
wyw | 文言文 |
jp | 日语 |
kor | 韩语 |
fra | 法语 |
spa | 西班牙语 |
th | 泰语 |
ara | 阿拉伯语 |
ru | 俄语 |
pt | 葡萄牙语 |
de | 德语 |
it | 意大利语 |
el | 希腊语 |
nl | 荷兰语 |
pl | 波兰语 |
bul | 保加利亚语 |
est | 爱沙尼亚语 |
dan | 丹麦语 |
fin | 芬兰语 |
cs | 捷克语 |
rom | 罗马尼亚语 |
slo | 斯洛文尼亚语 |
swe | 瑞典语 |
hu | 匈牙利语 |
cht | 繁体中文 |
vie | 越南语 |
错误码列表
当翻译结果无法正常返回时,请参考下表处理:
错误码 | 含义 | 解决方法 |
---|---|---|
52000 | 成功 | |
52001 | 请求超时 | 重试 |
52002 | 系统错误 | 重试 |
52003 | 未授权用户 | 检查您的 appid 是否正确,或者服务是否开通 |
54000 | 必填参数为空 | 检查是否少传参数 |
54001 | 签名错误 | 请检查您的签名生成方法 |
54003 | 访问频率受限 | 请降低您的调用频率 |
54004 | 账户余额不足 | 请前往管理控制台为账户充值 |
54005 | 长query请求频繁 | 请降低长query的发送频率,3s后再试 |
58000 | 客户端IP非法 | 检查个人资料里填写的 IP地址 是否正确可前往管理控制平台修改IP限制,IP可留空 |
58001 | 译文语言方向不支持 | 检查译文语言是否在语言列表里 |
58002 | 服务当前已关闭 | 请前往管理控制台开启服务 |
90107 | 认证未通过或未生效 | 请前往我的认证查看认证进度 |
常见问题
见通用翻译API技术文档:http://api.fanyi.baidu.com/api/trans/product/apidoc
更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务