百度翻译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 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接入文档

猜你喜欢

转载自blog.csdn.net/u012433546/article/details/129592968