新增特性

支持谷歌翻译

测试中发现在线的有道翻译准确性实在有不敢恭维。应该是我用的api不是最新的导致的。官方也没有提供最新的API解决。从github上找了一下,发现有谷歌翻译的包。用起来也比较简单,参考文档py-googletrans.rtfd.io

支持选择在线翻译

之前的版本只有有道一个在线翻译,在设置界面只能选择本地词典,在线词典没有开关。本地更新把在线翻译也加入到开关中了。没有什么特别需要留意的。

性能改进

新增了谷歌翻译后发现,翻译速度大幅降低。原因很简单,谷歌翻译和有道翻译都是在线翻译,速度比较慢。尤其是谷歌翻译,大约要1~2秒才能返回结果。整个翻译过程就可能需要2~3秒了。只是不能忍的。
解决方法就是将所有的在线翻译改成异步请求。
原来的逻辑:

graph TB 查词-->查询有道-->查询谷歌 查询谷歌-->查询本地词典-->显示结果

改进后为:

graph TB 查词-->查询有道 查词-->查询谷歌 查词-->查询本地词典-->显示结果 查询有道-.->显示结果 查询谷歌-.->显示结果

启动本地词典的结果是立即显示的。过几百毫秒后,显示有道的结果;过1秒钟左右,显示谷歌的结果。
另外,返回结果越晚,显示顺序越往上。

因为是异步返回结果,也就可能出现,同一个词查询多遍,或者,结果返回时显示已经结束等问题需要留意处理。解决方法就是,翻译结果要带上源字符串,通过比对看是不是与当前显示的匹配,不匹配就抛弃掉。同样的,显示窗口记录下翻译来源,同样的翻译来源仅仅显示一次。

需要特别注意的是,同步改成异步还是做了不少结构上的调整的。为了方便以后扩展在线词典,界面层不再直接访问YouDaoFanYiGoogle的后端类,而是通过统一的OnLine类访问。