具体实现
整个工程文件已经上传到我的代码仓库。
正式开始
项目结构
数据存储
因为本系统为自用而非商用,并且偏向功能性,所以直接用一个config.json文件保存所有的用户数据,就不用加密了。
原型设计
如图,本系统一共包含两个用户页面,由主页和设置页构成(设置页内置三个分页)。全部都是简单的控件,包括:文本框、按钮、输入框、单选按钮、纯文字。
UI设计
懒得找icon文件的小伙伴建议直接用的我的ui文件。对布局不熟悉的小伙伴建议直接用绝对布局(就是直接把控件拖到你想要的位置)。
1、将控件拖动到预设位置
2、为控件命名
3、调整控件大小
4、加载图标(记得把文字删掉)
图标文件需要自己事先保存,可以白嫖阿里云的。
模块设计
之前测试时我们其实已经将大部分功能做出来了,但是为了整合在一起,需要稍作调整。
识别+翻译模块
回到我们的用户操作面板,找出所有本模块相关控件:
发现本模块一共要提供5个接口:
- API参数设置(初始化)
包括识别语言、翻译语言、api参数等等数据的初始化和修改。
def initOptions(self, config): # 按照config进行设置
- 开始识别+翻译
因为识别和翻译过程是一键完成的,所以需要组合识别图片和翻译文字的接口。
def ocrPath(self, path): # 识别path地址的图片
def trans(self, content): # 翻译content的文字
- 修改识别语言
注意:识别语言更改了,翻译源语言一样要改。
def changeSource(self, lan_key): # lan_key为键,隐含了键值映射
- 修改目标翻译语言
这个只用修改翻译目标语言。
def initTran(self, config): # 按照config进行设置
- 是否启用离线模式
因为离线和在线模式调用的接口类不同,所以这个过程实际是由控制器控制的。
因为源代码量大,所以这里只列出函数名,详细代码请查看我的代码仓库。