锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

C#调用百度翻译API

时间:2022-09-02 09:00:00 s3urd交流电压变送器

使用示例:
在这里插入图片描述
百度返回的结果是分段的,可以发送带换行的文字翻译。
但是在获得翻译结果时,不能带换行。

按住大量文档注释ctrl然后点击鼠标链接跳转到链接



完整的语种列表可以使用包含类Languages访问

命名空间需要导入

 using System.Collections;  using System.Security.Cryptography;  using System.Web; 

代码:

 ///   /// 百度翻译AIP,你需要从获取密钥  /// 
这是免费的,不需要审核。
///
class BaiDuTranslation { static DateTime datetime; readonly string To; readonly string ID; readonly string Key; readonly TimeSpan Delay; readonly Dictionary<string, Result> dic = new Dictionary<string, Result>(); const string API_URL = "http://api.fanyi.baidu.com/api/trans/vip/translate"; /// /// 这种语言的字典是根据言的字典 /// /// 来源语种 /// 这种语言的存储字典 public Result this[string scr] => dic[scr]; /// /// 百度翻译的AIP使用间隔短于指定时间的请求会导致错误 /// /// 接口提供的id /// 接口提供的Key /// 等待间隔的请求 /// 静态类可用于目标语种中的常量选择,默认为中文 public BaiDuTranslation(string iD, string key, int delay = 1000, string to = Languages.中文_简体) { ID = iD; Key = key; Delay = new TimeSpan(0, 0, 0, 0, delay); To = to; } /// ///向百度翻译发起一个翻译请求。由于翻译结果会自动按换行分割语句,所以需要从索引器访问完成的翻译。 ///
///语种可以使用静态类中的常量选择 ///
///需要翻译的文字,上限5000字符 ///来源语种,默认为自动检测 ///此次请求的错误码。如果没有错则为null /// /// /// 52000 /// 成功。 /// /// /// 52001 /// 请求超时。请重试 /// /// /// 52002 /// 系统错误。请重试 /// /// /// 52003 /// 未授权用户。请检查appid是否正确或者服务是否开通 /// /// /// 54000 /// 必填参数为空。请检查是否少传参数 /// /// /// 54001 /// 签名错误。请检查您的签名生成方法 /// /// /// 54003 /// 访问频率受限。请降低您的调用频率,或进行身份认证后切换为高级版/尊享版 /// /// /// 54004 /// 账户余额不足。请前往管理控制台为账户充值 /// /// /// 54005 /// 长query请求频繁。请降低长query的发送频率,3s后再试 /// /// /// 58000 /// 客户端IP非法。检查个人资料里填写的IP地址是否正确,可前往开发者信息-基本信息 修改 /// /// /// 58001 /// 译文语言方向不支持。检查译文语言是否在语言列表里 /// /// /// 58002 /// 服务当前已关闭。请前往管理控制台开启服务 /// /// /// 90107 /// 认证未通过或未生效。请前往我的认证查看认证进度 /// /// /// public string GetTranslation(string source, string from = Languages.自动检测) { using var hc = new HttpClient(); using var md5 = MD5.Create(); var utf8 = HttpUtility.UrlEncode(source, System.Text.Encoding.UTF8); var randomNum = DateTime.Now.Millisecond.ToString(); var md5Sign = new string(md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(ID + source + randomNum + Key)).SelectMany(s => $"{ s:x2}").ToArray()); var url = $"{ API_URL}?q={ utf8}&from={ from}&to={ To}&appid={ ID}&salt={ randomNum}&sign={ md5Sign}"; if (DateTime.Now - datetime < Delay) Task.Delay(datetime + Delay - DateTime.Now).Wait(); datetime = DateTime.Now; var s = hc.GetStringAsync(url).Result; var r = System.Text.Json.JsonSerializer.Deserialize<TranslationResult>(s); if (r.error_code != null) return r.error_code; var d = r.trans_result.ToDictionary(t => t.src, t => t.dst); if (dic.ContainsKey(r.from)) dic[r.from].Add(d); else dic[r.from] = new Result(d); return null; } /// /// 储存翻译结果的只读字典,可以进行遍历 /// public struct Result : IEnumerable<KeyValuePair<string, string>> { /// /// 获得一个翻译,如果没有此文字的翻译则会抛出异常 /// /// 被翻译的文字 /// 翻译的结果 public string this[string scr] => dic[scr]; readonly Dictionary<string, string> dic; internal Result(Dictionary<string, string> dic = null) { this.dic = dic ?? new Dictionary<string, string>(); } internal void Add(Dictionary<string, string> dic = null) { if (dic == null) return; foreach (var (k, v) in dic) this.dic[k] = v; } public IEnumerator<KeyValuePair<string, string>> GetEnumerator() => ((IEnumerable<KeyValuePair<string, string>>)dic).GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)dic).GetEnumerator(); } /// /// 完整语种列表 /// /// /// 常用语种有: /// /// 中文zh /// 英语en /// 日语jp /// 韩语kor /// 法语fra /// 俄语ru /// 德语de /// 文言文wyw /// /// public static class Languages { public const string 自动检测 = "auto"; public const string 阿拉伯语 = "ara"; public const string 爱尔兰语 = "gle"; public const string 奥克语 = "oci"; public const string 阿尔巴尼亚语 = "alb"; public const string 阿尔及利亚阿拉伯语 = "arq"; public const string 阿肯语 = "aka"; public const string 阿拉贡语 = "arg"; public const string 阿姆哈拉语 = "amh"; public const string 阿萨姆语 = "asm"; public const string 艾马拉语 = "aym"; public const string 阿塞拜疆语 = "aze"; public const string 阿斯图里亚斯语 = "ast"; public const string 奥塞梯语 = "oss"; public const string 爱沙尼亚语 = "est"; public const string 奥杰布瓦语 = "oji"; public const string 奥里亚语 = "ori"; public const string 奥罗莫语 = "orm"; public const string 波兰语 = "pl"; public const string 波斯语 = "per"; public const string 布列塔尼语 = "bre"; public const string 巴什基尔语 = "bak"; public const string 巴斯克语 = "baq"; public const string 巴西葡萄牙语 = "pot"; public const string 白俄罗斯语 = "bel"; public const string 柏柏尔语 = "ber"; public const string 邦板牙语 = "pam"; public const string 保加利亚语 = "bul"; public const string 北方萨米语 = "sme"; public const string 北索托语 = "ped"; public const string 本巴语 = "bem"; public const string 比林语 = "bli"; public const string 比斯拉马语 = "bis"; public const string 俾路支语 = "bal"; public const string 冰岛语 = "ice"; public const string 波斯尼亚语 = "bos"; public const string 博杰普尔语 = "bho"; public const string 楚瓦什语 = "chv"; public const string 聪加语 = "tso"; public const string 丹麦语 = "dan"; public const string 德语 = "de"; public const string 鞑靼语 = "tat"; public const string 掸语 = "sha"; public const string 德顿语 = "tet"; public const string 迪维希语 = "div"; public const string 低地德语 = "log"; public const string 俄语 = "ru"; public const string 法语 = "fra"; public const string 菲律宾语 = "fil"; public const string 芬兰语 = "fin"; public const string 梵语 = "san"; public const string 弗留利语 = "fri"; public const string 富拉尼语 = "ful"; public const string 法罗语 = "fao"; public const string 盖尔语 = "gla"; public const string 刚果语 = "kon"; public const string 高地索布语 = "ups"; public const string 高棉语 = "hkm"; public const string 格陵兰语 = "kal"; public const string 格鲁吉亚语 = "geo"; public const string 古吉拉特语 = "guj"; public const string 古希腊语 = "gra"; public const string 古英语 = "eno"; public const string 瓜拉尼语 = "grn"; public const string 韩语 = "kor"; public const string 荷兰语 = "nl"; public const string 胡帕语 = "hup"; public const string 哈卡钦语 = "hak"; public const string 海地语 = "ht"; public const string 黑山语 = "mot"; public const string 豪萨语 = "hau"; public const string 吉尔吉斯语 = "kir"; public const string 加利西亚语 = "glg"; public const string 加拿大法语 = "frn"; public const string 加泰罗尼亚语 = "cat"; public const string 捷克语 = "cs"; public const string 卡拜尔语 = "kab"; public const string 卡纳达语 = "kan"; public const string 卡努里语 = "kau"; public const string 卡舒比语 = "kah"; public const string 康瓦尔语 = "cor"; public const string 科萨语 = "xho"; public const string 科西嘉语 = "cos"; public const string 克里克语 = "cre"; public const string 克里米亚鞑靼语 = "cri"; public const string 克林贡语 = "kli"; public const string 克罗地亚语 = "hrv"; public const string 克丘亚语 = "que"; public const string 克什米尔语 = "kas"; public const string 孔卡尼语 = "kok"; public const string 库尔德语 = "kur"; public const string 拉丁语 = "lat"; public const string 老挝语 = "lao"; public const string 罗马尼亚语 = "rom"; public const string 拉特加莱语 = "lag"; public const string 拉脱维亚语 = "lav"; public const string 林堡语 = "lim"; public const string 林加拉语 = "lin"; public const string 卢干达语 = "lug"; public const string 卢森堡语 = "ltz"; public const string 卢森尼亚语 = "ruy"; public const string 卢旺达语 = "kin"; public const string 立陶宛语 = "lit"; public const string 罗曼什语 = "roh"; public const string 罗姆= "ro"; public const string 逻辑语 = "loj"; public const string 马来语 = "may"; public const string 缅甸语 = "bur"; public const string 马拉地语 = "mar"; public const string 马拉加斯语 = "mg"; public const string 马拉雅拉姆语 = "mal"; public const string 马其顿语 = "mac"; public const string 马绍尔语 = "mah"; public const string 迈蒂利语 = "mai"; public const string 曼克斯语 = "glv"; public const string 毛里求斯克里奥尔语 = "mau"; public const string 毛利语 = "mao"; public const string 孟加拉语 = "ben"; public const string 马耳他语 = "mlt"; public const string 苗语 = "hmn"; public const string 挪威语 = "nor"; public const string 那不勒斯语 = "nea"; public const string 南恩德贝莱语 = "nbl"; public const string 南非荷兰语 = "afr"; public const string 南索托语 = "sot"; public const string 尼泊尔语 = "nep"; public const string 葡萄牙语 = "pt"; public const string 旁遮普语 = "pan"; public const string 帕皮阿门托语 = "pap"; public 元器件数据手册、IC替代型号,打造电子元器件IC百科大全!

相关文章