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;
}

应用场景

  1. 多语言资源生成:自动将中文语言资源翻译成其他语言
  2. 实时翻译:在应用中提供实时翻译功能
  3. 批量翻译:处理大量文本的翻译需求
posted @ 2026-03-06 18:06  (*_^)?  阅读(8)  评论(0)    收藏  举报