百度翻譯API(C#)


百度翻譯開放平台:點擊打開鏈接

1. 定義類用於保存解析json得到的結果

public class Translation
{
    public string Src { get; set; }
    public string Dst { get; set; }
}

public class TranslationResult
{
    //錯誤碼,翻譯結果無法正常返回
    public string Error_code { get; set; }
    public string Error_msg { get; set; }
    public string From { get; set; }
    public string To { get; set; }
    public string Query { get; set; }
    //翻譯正確,返回的結果
    //這里是數組的原因是百度翻譯支持多個單詞或多段文本的翻譯,在發送的字段q中用換行符(\n)分隔
    public Translation[] Trans_result { get; set; }
}

2. 定義枚舉保存一些常用語言

public enum Language
{
    //百度翻譯API官網提供了多種語言,這里只列了幾種
    auto = 0,
    zh = 1,
    en = 2,
    cht = 3,
}

3. 因為百度翻譯要求對發送數據中的一部分做md加密,所以這里給出對字符串做md5加密的函數

//對字符串做md5加密
private static string GetMD5WithString(string input)
{
    if (input == null)
    {
        return null;
    }
    MD5 md5Hash = MD5.Create();
    //將輸入字符串轉換為字節數組並計算哈希數據  
    byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
    //創建一個 Stringbuilder 來收集字節並創建字符串  
    StringBuilder sBuilder = new StringBuilder();
    //循環遍歷哈希數據的每一個字節並格式化為十六進制字符串  
    for (int i = 0; i < data.Length; i++)
    {
        sBuilder.Append(data[i].ToString("x2"));
    }
    //返回十六進制字符串  
    return sBuilder.ToString();
}

4. 調用百度翻譯API的函數。記得去申請appid

/// <summary>
/// 調用百度翻譯API進行翻譯
/// 詳情可參考http://api.fanyi.baidu.com/api/trans/product/apidoc
/// </summary>
/// <param name="q">待翻譯字符</param>
/// <param name="from">源語言</param>
/// <param name="to">目標語言</param>
/// <returns></returns>
private static TranslationResult GetTranslationFromBaiduFanyi(string q, Language from, Language to)
{
    //可以直接到百度翻譯API的官網申請
    //一定要去申請,不然程序的翻譯功能不能使用
    string appId = "0123456789";
    string password = "0123456789";

    string jsonResult = String.Empty;
    //源語言
    string languageFrom = from.ToString().ToLower();
    //目標語言
    string languageTo = to.ToString().ToLower();
    //隨機數
    string randomNum = System.DateTime.Now.Millisecond.ToString();
    //md5加密
    string md5Sign = GetMD5WithString(appId + q + randomNum + password);
    //url
    string url = String.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}",
        HttpUtility.UrlEncode(q, Encoding.UTF8),
        languageFrom,
        languageTo,
        appId,
        randomNum,
        md5Sign
        );
    WebClient wc = new WebClient();
    try
    {
        jsonResult = wc.DownloadString(url);
    }
    catch
    {
        jsonResult = string.Empty;
    }
    //解析json
    JavaScriptSerializer jss = new JavaScriptSerializer();
    TranslationResult result = jss.Deserialize<TranslationResult>(jsonResult);
    return result;
}

5. 對獲取的翻譯結果進行提取

/// <summary>
/// 將中文翻譯為英文
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string translation(string source)
{
    TranslationResult result = GetTranslationFromBaiduFanyi(source, Language.zh, Language.en);
    //判斷是否出錯
    if(result.Error_code == null)
    {
        return result.Trans_result[0].Dst;
    }
    else
    {
        //檢查appid和密鑰是否正確
        return "翻譯出錯,錯誤碼:" + result.Error_code + ",錯誤信息:" + result.Error_msg;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM