阅读一个翻译器客户端结构笔记
BaseParser
|
|_TXTParser --List<string>
|
|_WordParser --- List<Aspose.Words.Node>
|
|_PDFParser ---PDF =>Doc,List<Aspose.Words.Node> --Paragraph
|
|_PPTParser ---List<Aspose.slides.Paragraph>
|
|_ExcelParser ---Aspose.cells.Workbook
BaseParser
--GetTranslateText(调用服务向后端api发送翻译请求)
--IsSupportBatchTranslate(全局开启分批翻译的开关,分批的好处是减少请求数),
如果开启则调用BatchTranslate分批组合翻译,否则调用singleTranslate一段段翻译
--BatchSetParagraphContent输出并替换word节点中翻译后的内容
TXTParser-----TranslateTXT \
WordParser----TranslateDoc \
PDFParser-----TranslatePDF 参数为Task
PPTParser-----TranslatePPT /
ExcelParser---TranslateExcel /
Task为单个翻译任务对应的数据其继承了INotifyPropertyChanged,
TaskViewModel为一个翻译任务界面对应的数据可以当成任务数据集合ObservableCollection<Task>,当点击开始翻译时,
从其中过滤出需要跑的翻译任务,构造TaskThread任务执行包裹结构并添加到待启动集合,包裹执行StartTranslate(task),通过任务中的文件名
后缀(Dictionary<string, Action<Task>>)映射到对应的Action从而执行具体调用;遍历集合启动所有task;
- 点赞
- 收藏
- 关注作者
评论(0)