百度翻译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 个)

字段名类型是否必填描述备注
qstring请求翻译queryUTF-8编码
fromstring翻译源语言可设置为auto
tostring翻译目标语言不可设置为auto
appidstringAPPID可在管理控制台查看
saltstring随机数可为字母或数字的字符串
signstring签名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格式,包含以下字段:

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

返回结果举例

正确情况

{
    "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接入文档

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值