百度翻译API —— 通用文本翻译

目录

接入方式

通用翻译API HTTPS 地址:

请求方式

返回结果

返回结果举例

正确情况:

异常情况:

错误码解析

请求翻译方法

语种列表

常见语种列表

完整语种列表

完整源码

 


接入方式

通用翻译API通过 HTTP 接口对外提供多语种互译服务。需要指定翻译文本和目标语言,当前语言可以设置为自动识别

通用翻译API HTTPS 地址:

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

请求方式

 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 请指定为:application/x-www-form-urlencoded。这里演示使用 Get 的方法
字符编码:统一采用 UTF-8 编码格式
query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个)

字段名 类型 是否必填 描述 备注
q string 是 请求翻译query UTF-8编码
from string 是 翻译源语言 可设置为auto
to string 是 翻译目标语言 不可设置为auto
appid string 是 APPID 可在管理控制台查看
salt string 是 随机数 可为字母或数字的字符串
sign string 是 签名 appid+q+salt+密钥的MD5值

md5计算方法:

// 计算MD5值
public static string EncryptString(string str)
{MD5 md5 = MD5.Create();// 将字符串转换成字节数组byte[] byteOld = Encoding.UTF8.GetBytes(str);// 调用加密方法byte[] byteNew = md5.ComputeHash(byteOld);// 将加密结果转换为字符串StringBuilder sb = new StringBuilder();foreach (byte b in byteNew){// 将字节转换成16进制表示的字符串,sb.Append(b.ToString("x2"));}// 返回加密的字符串return sb.ToString();
}

签名生成方法:

Step1. 将请求参数中的 APPID(appid), 翻译 query(q,注意为UTF-8编码),随机数(salt),以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥的顺序拼接得到字符串 1。
Step2. 对字符串 1 做 MD5 ,得到 32 位小写的 sign。

注:
1. 待翻译文本(q)需为 UTF-8 编码;
2. 在生成签名拼接 appid+q+salt+密钥 字符串时,q 不需要做 URL encode,在生成签名之后,发送 HTTP 请求之前才需要对要发送的待翻译文本字段 q 做 URL encode;
3.如遇到报 54001 签名错误,请检查您的签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接 sign 前就做了 URL encode;
4.在生成签名后,发送 HTTP 请求时,如果将 query 拼接在URL上,需要对 query 做 URL encode。

返回结果

返回的结果是json格式,包含以下字段:

字段名 类型 描述 备注
from string 源语言 返回用户指定的语言,或者自动检测出的语种(源语言设为auto时)
to string 目标语言 返回用户指定的目标语言
trans_result array 翻译结果 返回翻译结果,包括src和dst字段
trans_result.*.src string 原文 接入举例中的“apple”
trans_result.*dst string 译文 接入举例中的“苹果”
error_code integer 错误码 仅当出现错误时显示

返回结果举例

正确情况:

{"from": "en","to": "zh","trans_result": [{"src": "apple","dst": "苹果"}]
}

异常情况:

{"error_code": "54001","error_msg": "Invalid Sign"
}

错误码解析

public static string GetErrorCode(string error_code, string msg)
{string msg_zh = "";if (error_code == "52000")msg_zh = "成功";if (error_code == "52001")msg_zh = "请求超时,请重试";if (error_code == "52002")msg_zh = "系统错误,请重试";if (error_code == "52003")msg_zh = "未授权用户,请检查appid是否正确或者服务是否开通";if (error_code == "54000")msg_zh = "必填参数为空,请检查是否少传参数 ";if (error_code == "54001")msg_zh = "签名错误,请检查您的签名生成方法 ";if (error_code == "54003")msg_zh = "访问频率受限,请降低您的调用频率,或进行身份认证后切换为高级版/尊享版 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "54004")msg_zh = "账户余额不足,请前往管理控制台为账户充值 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "54005")msg_zh = "长query请求频繁,请降低长query的发送频率,3s后再试 ";if (error_code == "58000")msg_zh = "客户端IP非法,检查个人资料里填写的IP地址是否正确,可前往开发者信息-基本信息修改 ";if (error_code == "58001")msg_zh = "译文语言方向不支持,检查译文语言是否在语言列表里";if (error_code == "58002")msg_zh = "服务当前已关闭,请前往管理控制台开启服务 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "90107")msg_zh = "认证未通过或未生效 请前往我的认证查看认证进度 https://api.fanyi.baidu.com/myIdentify";return $"错误码:{error_code} 错误信息:{msg} 错误码含义:{msg_zh}";
}

请求翻译方法

/// <summary>
/// 获取翻译结果
/// </summary>
/// <param name="content">要翻译的原文</param>
/// <param name="to">目标语言</param>
/// <param name="from">源语言</param>
public static string Get(string content,string to,string from = "zh")
{Random rd = new Random();string salt = rd.Next(100000).ToString();string sign = EncryptString(APPID + content + salt + APPKEY);string url = "http://api.fanyi.baidu.com/api/trans/vip/translate?";url += "q=" + HttpUtility.UrlEncode(content);url += "&from=" + from;url += "&to=" + to;url += "&appid=" + APPID;url += "&salt=" + salt;url += "&sign=" + sign;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "GET";request.ContentType = "text/html;charset=UTF-8";request.UserAgent = null;request.Timeout = 6000;HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));string retString = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();return retString;
}

语种列表

常见语种列表

名称 代码 名称 代码 名称 代码
自动检测 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

完整语种列表

中文首字母 名称 代码 语种检测 名称 代码 语种检测 名称 代码 语种检测
A 阿拉伯语 ara 是 爱尔兰语 gle 是 奥克语 oci 是
阿尔巴尼亚语 alb 是 阿尔及利亚阿拉伯语 arq 否 阿肯语 aka 否
阿拉贡语 arg 否 阿姆哈拉语 amh 是 阿萨姆语 asm 是
艾马拉语 aym 否 阿塞拜疆语 aze 是 阿斯图里亚斯语 ast 是
奥塞梯语 oss 否 爱沙尼亚语 est 是 奥杰布瓦语 oji 否
奥里亚语 ori 是 奥罗莫语 orm 否
B 波兰语 pl 是 波斯语 per 是 布列塔尼语 bre 是
巴什基尔语 bak 否 巴斯克语 baq 是 巴西葡萄牙语 pot 否
白俄罗斯语 bel 是 柏柏尔语 ber 是 邦板牙语 pam 否
保加利亚语 bul 是 北方萨米语 sme 否 北索托语 ped 否
本巴语 bem 否 比林语 bli 否 比斯拉马语 bis 否
俾路支语 bal 否 冰岛语 ice 是 波斯尼亚语 bos 是
博杰普尔语 bho 否
C 楚瓦什语 chv 否 聪加语 tso 否
D 丹麦语 dan 是 德语 de 是 鞑靼语 tat 是
掸语 sha 否 德顿语 tet 否 迪维希语 div 否
低地德语 log 是
E 俄语 ru 是
F 法语 fra 是 菲律宾语 fil 是 芬兰语 fin 是
梵语 san 否 弗留利语 fri 否 富拉尼语 ful 否
法罗语 fao 否
G 盖尔语 gla 否 刚果语 kon 否 高地索布语 ups 否
高棉语 hkm 是 格陵兰语 kal 否 格鲁吉亚语 geo 是
古吉拉特语 guj 是 古希腊语 gra 否 古英语 eno 否
瓜拉尼语 grn 否
H 韩语 kor 是 荷兰语 nl 是 胡帕语 hup 否
哈卡钦语 hak 否 海地语 ht 否 黑山语 mot 否
豪萨语 hau 否
J 吉尔吉斯语 kir 否 加利西亚语 glg 是 加拿大法语 frn 否
加泰罗尼亚语 cat 是 捷克语 cs 是
K 卡拜尔语 kab 是 卡纳达语 kan 是 卡努里语 kau 否
卡舒比语 kah 否 康瓦尔语 cor 否 科萨语 xho 是
科西嘉语 cos 否 克里克语 cre 否 克里米亚鞑靼语 cri 否
克林贡语 kli 否 克罗地亚语 hrv 是 克丘亚语 que 否
克什米尔语 kas 否 孔卡尼语 kok 否 库尔德语 kur 是
L 拉丁语 lat 是 老挝语 lao 否 罗马尼亚语 rom 是
拉特加莱语 lag 否 拉脱维亚语 lav 是 林堡语 lim 否
林加拉语 lin 否 卢干达语 lug 否 卢森堡语 ltz 否
卢森尼亚语 ruy 否 卢旺达语 kin 是 立陶宛语 lit 是
罗曼什语 roh 否 罗姆语 ro 否 逻辑语 loj 否
M 马来语 may 是 缅甸语 bur 是 马拉地语 mar 否
马拉加斯语 mg 是 马拉雅拉姆语 mal 是 马其顿语 mac 是
马绍尔语 mah 否 迈蒂利语 mai 是 曼克斯语 glv 否
毛里求斯克里奥尔语 mau 否 毛利语 mao 否 孟加拉语 ben 是
马耳他语 mlt 是 苗语 hmn 否
N 挪威语 nor 是 那不勒斯语 nea 否 南恩德贝莱语 nbl 否
南非荷兰语 afr 是 南索托语 sot 否 尼泊尔语 nep 是
P 葡萄牙语 pt 是 旁遮普语 pan 是 帕皮阿门托语 pap 否
普什图语 pus 否
Q 齐切瓦语 nya 否 契维语 twi 否 切罗基语 chr 否
R 日语 jp 是 瑞典语 swe 是
S 萨丁尼亚语 srd 否 萨摩亚语 sm 否 塞尔维亚-克罗地亚语 sec 否
塞尔维亚语 srp 是 桑海语 sol 否 僧伽罗语 sin 是
世界语 epo 是 书面挪威语 nob 是 斯洛伐克语 sk 是
斯洛文尼亚语 slo 是 斯瓦希里语 swa 是 塞尔维亚语(西里尔) src 否
索马里语 som 是
T 泰语 th 是 土耳其语 tr 是 塔吉克语 tgk 是
泰米尔语 tam 是 他加禄语 tgl 是 提格利尼亚语 tir 否
泰卢固语 tel 是 突尼斯阿拉伯语 tua 否 土库曼语 tuk 否
W 乌克兰语 ukr 是 瓦隆语 wln 是 威尔士语 wel 是
文达语 ven 否 沃洛夫语 wol 否 乌尔都语 urd 是
X 西班牙语 spa 是 希伯来语 heb 是 希腊语 el 是
匈牙利语 hu 是 西弗里斯语 fry 是 西里西亚语 sil 否
希利盖农语 hil 否 下索布语 los 否 夏威夷语 haw 否
新挪威语 nno 是 西非书面语 nqo 否 信德语 snd 否
修纳语 sna 否 宿务语 ceb 否 叙利亚语 syr 否
巽他语 sun 否
Y 英语 en 是 印地语 hi 是 印尼语 id 是
意大利语 it 是 越南语 vie 是 意第绪语 yid 否
因特语 ina 否 亚齐语 ach 否 印古什语 ing 否
伊博语 ibo 否 伊多语 ido 否 约鲁巴语 yor 否
亚美尼亚语 arm 是 伊努克提图特语 iku 否 伊朗语 ir 否
Z 中文(简体) zh 是 中文(繁体) cht 是 中文(文言文) wyw 是
中文(粤语) yue 是 扎扎其语 zaz 否 中古法语 frm 否
祖鲁语 zul 否 爪哇语 jav 否

完整源码

class TranslateHelper
{// 翻译AI的APP IDstatic string APPID = "";static string APPKEY = "";public static void Init(string appID,string secretKey){APPID = appID;APPKEY = secretKey;}/// <summary>/// 获取翻译结果/// </summary>/// <param name="content">要翻译的原文</param>/// <param name="to">目标语言</param>/// <param name="from">源语言</param>public static string Get(string content,string to,string from = "zh"){Random rd = new Random();string salt = rd.Next(100000).ToString();string sign = EncryptString(APPID + content + salt + APPKEY);string url = "http://api.fanyi.baidu.com/api/trans/vip/translate?";url += "q=" + HttpUtility.UrlEncode(content);url += "&from=" + from;url += "&to=" + to;url += "&appid=" + APPID;url += "&salt=" + salt;url += "&sign=" + sign;HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "GET";request.ContentType = "text/html;charset=UTF-8";request.UserAgent = null;request.Timeout = 6000;HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));string retString = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();return retString;}// 计算MD5值public static string EncryptString(string str){MD5 md5 = MD5.Create();// 将字符串转换成字节数组byte[] byteOld = Encoding.UTF8.GetBytes(str);// 调用加密方法byte[] byteNew = md5.ComputeHash(byteOld);// 将加密结果转换为字符串StringBuilder sb = new StringBuilder();foreach (byte b in byteNew){// 将字节转换成16进制表示的字符串,sb.Append(b.ToString("x2"));}// 返回加密的字符串return sb.ToString();}public static string GetErrorCode(string error_code, string msg){string msg_zh = "";if (error_code == "52000")msg_zh = "成功";if (error_code == "52001")msg_zh = "请求超时,请重试";if (error_code == "52002")msg_zh = "系统错误,请重试";if (error_code == "52003")msg_zh = "未授权用户,请检查appid是否正确或者服务是否开通";if (error_code == "54000")msg_zh = "必填参数为空,请检查是否少传参数 ";if (error_code == "54001")msg_zh = "签名错误,请检查您的签名生成方法 ";if (error_code == "54003")msg_zh = "访问频率受限,请降低您的调用频率,或进行身份认证后切换为高级版/尊享版 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "54004")msg_zh = "账户余额不足,请前往管理控制台为账户充值 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "54005")msg_zh = "长query请求频繁,请降低长query的发送频率,3s后再试 ";if (error_code == "58000")msg_zh = "客户端IP非法,检查个人资料里填写的IP地址是否正确,可前往开发者信息-基本信息修改 ";if (error_code == "58001")msg_zh = "译文语言方向不支持,检查译文语言是否在语言列表里";if (error_code == "58002")msg_zh = "服务当前已关闭,请前往管理控制台开启服务 https://fanyi-api.baidu.com/api/trans/product/desktop";if (error_code == "90107")msg_zh = "认证未通过或未生效 请前往我的认证查看认证进度 https://api.fanyi.baidu.com/myIdentify";return $"错误码:{error_code} 错误信息:{msg} 错误码含义:{msg_zh}";}
}

 百度翻译文档与支持

通用翻译API接入文档

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注