经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C#调用百度翻译API实现一个翻译功能
来源:jb51  时间:2021/6/28 9:09:43  对本文有异议

前言

虽然百度翻译相对于谷歌翻译在准确性方面还有很大的提升空间,但网络的现实情况及百度翻译接口的免费易用性方面让我们选择百度翻译接口。下面来一起看看详细的步骤吧

方法如下

appId 和 passWord 需要到百度翻译开放平台申请

  1. using System;
  2. using System.Net;
  3. using System.Web.Security;
  4. using System.Web.Script.Serialization;
  5.  
  6. namespace TranslatorOfWang
  7. {
  8. class TranslateFunction
  9. {
  10. public static string Translate(string content)
  11. {
  12. string languageFrom = "en", languageTo = "zh";
  13. if (Translate(content, languageFrom, languageTo).Error_code == null)
  14. {
  15. return Translate(content, languageFrom, languageTo).Trans_result[0].Dst;
  16. }
  17. else
  18. return Translate(content, languageFrom, languageTo).Error_msg;
  19. }
  20. public static PostResult Translate(string content, string languageFrom, string languageTo)
  21. {
  22. string appId = "2018111519456789", passWord = "gMk8wEKxENvbpUcvFxxx", randomNum = new Random().Next().ToString();
  23. string md5Sign = FormsAuthentication.HashPasswordForStoringInConfigFile(appId + content + randomNum + passWord, "MD5").ToLower();
  24. string FullRequest = "http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + content + "&from=" + languageFrom + "&to=" + languageTo + "&appid=" + appId + "&salt=" + randomNum + "&sign=" + md5Sign;
  25. string m_Content = new WebClient().DownloadString(FullRequest);
  26. PostResult m_postResult = new JavaScriptSerializer().Deserialize<PostResult>(m_Content);
  27. return m_postResult;
  28. }
  29. public class PostResult{
  30. public string Error_code { set; get; }
  31. public string Error_msg { set; get; }
  32. public string From { set; get; }
  33. public string To { set; get; }
  34. public TranslateContent[] Trans_result { set; get; }
  35. }
  36. public class TranslateContent
  37. {
  38. public string Src { set; get; }
  39. public string Dst { set; get; }
  40. }
  41. }
  42. }
  43.  

PostResult为百度API返回的值类型组成的一个自定义类,类里的每个名字和百度翻译API返回值里名字要一致。

升级功能:

先将要翻译的文本写入TXT文档,存入主目录下的File目录下,可以用以下代码读取后翻译,用以解决每次翻译,百度翻译有句子长短限制的问题。TBTxtName.txt为要翻译的文件名,要替换的符号以及语言可自己选择。

  1. public void ReadAndTranslate()
  2. {
  3. string TextName = TBTxtName.txt”;
  4. string path = "File/";
  5. StreamReader sr = new StreamReader(path + TextName + ".txt", Encoding.Default);
  6. StreamWriter m_SW = new StreamWriter(path + DateTime.Now.ToString("yyyymmddhhmm") + "TransLated" + ".txt", true);
  7.  
  8. //去除符号重新定义句子
  9. string xx = sr.ReadToEnd();
  10. string[] split = xx.Split(new char[] { '.','!','?', ';', ',', ':' });
  11.  
  12. string content;
  13. for (int i = 0; i < split.Length; i++)
  14. {
  15. content = split[i];
  16. if (content != null & content != "" & content != " " & content != "\n" & content != "\t" & content != "\r")
  17. {
  18. string line = TranslationFunction.Translate(content);
  19. m_SW.WriteLine(line);
  20. //m_SW.WriteLine(content);
  21. }
  22. }
  23. m_SW.Dispose();
  24. m_SW.Close();
  25. }
  26.  

总结

到此这篇关于C#调用百度翻译API实现一个翻译功能的文章就介绍到这了,更多相关C#调用百度翻译API内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号