一款自用的翻译小工具,开源了
2023-02-19 12:19:31 时间
一款自用的翻译小工具,开源了
TranslationTool 作者:WPFDevelopersOrg - 唐宋元明清|驚鏵 原文链接:https://github.com/Kybs0/TranslationTool
- 此项目使用
WPF MVVM
开发。 - 框架使用大于等于
.NET461
。 Visual Studio 2019
。- 最初是支持以下:
Google
有道
金山
百度
- 目前支持
有道
、百度
翻译 其他接口均无法访问。 - 项目中使用
WebRequest
进行http
翻译请求,Unicode转字符串
,MD5加密
,ScriptControl执行JS
,winmm
播放音频,SpeechSynthesizer
文本转语音,下载音频文件
等。 - 更多代码请下载源码[1],欢迎给项目一个
Star
。 - 各种翻译
WebAPI
。
- 实体类。
- 帮助类。
- 界面。
1)调用API部分代码如下:
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Translation.Api;
using Translation.WebApi.WebRequestHelper;
namespace Translation.WebApi.YouDaoApi
{
/// <summary>
/// 官方API翻译
/// </summary>
public class YouDaoUnOfficialWordApiService : WebRequestBase
{
public static async Task<EnglishWordTranslationData> GetWordsAsync(string queryText)
{
if (string.IsNullOrWhiteSpace(queryText))
{
return new EnglishWordTranslationData();
}
try
{
var requestUrl = GetRequestUrl(queryText.Trim());
var result = await RequestUrlAsync(requestUrl);
var youDaoResponse = JsonConvert.DeserializeObject<IntergateYouDaoDataResponse>(result);
var translationData = new EnglishWordTranslationData
{
Word = youDaoResponse.Word ?? string.Empty,
DetailJson = result,
UkPronounce = youDaoResponse.EnglishToChineseData?.GetUkPronounce() ?? new PronounceInfo(),
UsPronounce = youDaoResponse.EnglishToChineseData?.GetUsPronounce() ?? new PronounceInfo(),
Translations = youDaoResponse.EnglishToChineseData?.GetTranslation() ?? new List<SematicInfo>(),
Phrases = youDaoResponse.PhraseDictionary?.GetPhrases() ?? new List<PhraseInfo>(),
Synonyms = youDaoResponse.SynonymDictionary?.GetSynonymWords() ?? new List<SynonymInfo>(),
Cognates = youDaoResponse.CognateWordDictionary?.GetCognateWords() ?? new List<CognateInfo>(),
Sentences = youDaoResponse.CollinsDictionary?.GetCollinsSentences() ?? new List<SentenceInfo>(),
};
return translationData;
}
catch (Exception e)
{
return new EnglishWordTranslationData();
}
}
private static string GetRequestUrl(string queryWord)
{
var dictString = GetDictString();
var requestUrl = string.Format("http://dict.youdao.com/jsonapi?xmlVersion=5.1&jsonversion=2&client=mobile&" +
"q={0}&dicts={1}&network=5g", queryWord, dictString);
return requestUrl;
}
/// <summary>
/// 获取字典字符串
/// 需要查询哪些字典。目前已知
/// </summary>
/// <returns></returns>
private static string GetDictString()
{
var dictionaryQueryModel = new DictionaryQueryModel()
{
Dictionaries = new List<List<string>>()
{
new List<string>()
{
"ec",
//"ec21",
"phrs",
"syno",
"rel_word",
"collins"
},
},
};
var requestString = WebRequestTransformHelper.GetRequestString(dictionaryQueryModel);
return requestString;
}
}
}
鸣谢 - 唐宋元明清
参考资料
[1]
源码: https://github.com/Kybs0/TranslationTool
相关文章
- Linux top命令详解 -- 罗小黑
- Linux一键重装脚本,Centos、Debain、Ubuntu随意选择
- Gitea 的邮件通知
- c++标准模板库
- php 伪静态-服务器伪静态和WordPress固定连接设置
- Python:Django框架
- 基于Django的博客开发
- PowerPhotos for Mac(mac专用图片管理工具)
- windows命令行筛选-windows下使用命令行运行PHP
- c 按照位数读取一行-C++习题 倒置排序 OpenJudge
- 笔记本怎样连接投影仪-linux(ubuntu)下外接投影仪或着显示器的方法
- 【毕业设计】单片机红外热成像仪 - 嵌入式 stm32 树莓派
- vc60修改快捷键-如何解决Visual c++不能打开文件以及工程不能添加文件的问题
- c 线程安全的单例模式-设计模式之单例模式(C++版)
- c 线程安全的单例模式-C++单例模式(线程安全、内存释放)
- 嵌入式:ARM相关开发工具概述
- 嵌入式:ARM符号定义伪操作详解
- c 线程安全的单例模式-详解C++实现线程安全的单例模式
- C++ OpenCV手动截取图像做透视变换
- 超简单的pyTorch训练->onnx模型->C++ OpenCV DNN推理(附源码地址)