目录
接入方式
通用翻译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。文章来源:https://www.toymoban.com/news/detail-482054.html
返回结果
返回的结果是json格式,包含以下字段:文章来源地址https://www.toymoban.com/news/detail-482054.html
字段名 | 类型 | 描述 | 备注 |
---|---|---|---|
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 ID
static 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接入文档
到了这里,关于百度翻译API —— 通用文本翻译的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!