目录
接入方式
通用翻译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}";}
}