百度翻译调用

转载自

百度翻译开放平台:点击打开链接

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;
    }
}
复制代码

转载于:https://www.cnblogs.com/macT/p/11390201.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值