C#调用百度翻译API,实现百度翻译帮助类
1. API配置
首先需要在百度翻译开放平台注册账号,获取App ID和密钥:
public class BaiduTransHelper
{
const string urlPart = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
const string appId = "YOUR_APP_ID"; // 替换为实际App ID
const string secretKey = "YOUR_SECRET_KEY"; // 替换为实际密钥
public static int LastErrorCode { get; private set; }
// 方法实现...
}
2. 签名生成
根据百度翻译API的要求,需要生成签名:
// 计算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();
}
3. 单字符串翻译
实现单个字符串的翻译功能:
public static string Translation(string q, string from, string to)
{
Random rd = new Random();
string salt = rd.Next(0xffffff).ToString();
string sign = EncryptString(appId + q + salt + secretKey);
string url = urlPart;
url += "q=" + HttpUtility.UrlEncode(q);
url += "&from=" + from;
url += "&to=" + to;
url += "&appid=" + appId;
url += "&salt=" + salt;
url += "&sign=" + sign;
// 发送HTTP请求
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();
// 解析JSON响应
TranslationJson translationJson = JsonConvert.DeserializeObject<TranslationJson>(retString);
string result = string.Empty;
if(translationJson != default)
{
if(translationJson.error_code == 52000)//成功
{
result = translationJson.trans_result[0].dst;
}
else
{
LastErrorCode = translationJson.error_code;
}
}
else
{
LastErrorCode = -1;
}
return result;
}
4. 多字符串翻译
支持批量翻译多个字符串:
public static List<TranslationResult> Translation(IEnumerable<string> qs, string from, string to)
{
string q = string.Join("\n", qs);
Random rd = new Random();
string salt = rd.Next(0xffffff).ToString();
string sign = EncryptString(appId + q + salt + secretKey);
string url = urlPart;
url += "q=" + HttpUtility.UrlEncode(q);
url += "&from=" + from;
url += "&to=" + to;
url += "&appid=" + appId;
url += "&salt=" + salt;
url += "&sign=" + sign;
// 发送请求和处理响应...
// 解析结果
TranslationJson translationJson = JsonConvert.DeserializeObject<TranslationJson>(retString);
List<TranslationResult> result = null;
if (translationJson != default)
{
if (translationJson.error_code == 52000)//成功
{
result = translationJson.trans_result;
}
else
{
LastErrorCode = translationJson.error_code;
}
}
else
{
LastErrorCode = -1;
}
return result;
}
应用场景
- 多语言资源生成:自动将中文语言资源翻译成其他语言
- 实时翻译:在应用中提供实时翻译功能
- 批量翻译:处理大量文本的翻译需求

浙公网安备 33010602011771号