BabelDOC Desktop:把 PDF 翻译流程放进桌面窗口
给 BabelDOC 做了一个 macOS 桌面界面。选一个 PDF,确认开始,翻译完自动打开双语文件,省得每次都去终端敲命令。
翻译用的还是 BabelDOC,我做的是外面的界面和调用流程。Electron + React,Python 环境交给 uv 准备,目前自己在 Apple Silicon Mac 上用。
文件先放进来,再开始翻译
0.1.2 加了文件暂存区。拖进来的 PDF 先显示成卡片,也可以点按钮选择文件,选中要翻的那份后再点确认。
历史记录默认显示最近五条,更多的点开看。翻译完的文件也能从这里再打开。
设置页改了几次
最开始只有一套 API 配置,后来加了多套。地址、模型、Key,还有语言和输出目录,全堆在一个表单里就不太好用了。
0.1.3 把它们拆开:上面放语言、输出目录这些通用设置,下面一张卡片对应一套 API 配置,点哪张就启用哪张。编辑也直接在卡片里展开,不用跳来跳去。
还有个很奇怪的地方,保存完设置会自动回到翻译页。我可能还要改另一套配置,刚保存一次就被送走了,所以也去掉了这个跳转。
“测试连接”也出过问题。正在编辑 B 配置,实际测的却是启用中的 A,结果还显示连接正常。现在会标明测的是哪套,编辑中的内容要先保存成功再测,免得测完还是不知道自己填的地址能不能用。
点了打开,什么反应都没有
翻译后的文件如果被移动或删除,再从历史记录里点“打开”,之前是没有提示的。
查下来是 shell.openPath 的失败通过返回值给出来,光写 catch 接不到。后来把历史里的打开和翻译后的自动打开统一处理,找不到文件就提示。
每次翻译也会留下原始日志。有时候界面显示完成,但里面还有部分段落没翻,这种情况就需要看日志,不能只看最后那个完成状态。
测试也有容易漏的地方
项目里有调用真实 BabelDOC 的端到端测试,但没配置引擎路径时,这几条会直接跳过。整套测试是绿的,不等于真的翻过一个 PDF。
翻译缓存也是一样。重复跑同一份文件,可能直接用了缓存,模型根本没收到新请求。验证这一段时需要关掉缓存,再检查生成的双语文件。
目前的状态
版本到 0.1.3,接 OpenAI 兼容的服务。第一次打开要下载 Python 环境和相关资源,准备好后再翻译;使用远程 API 需要网络。
运行环境放在应用包外面,更新应用时可以保留,不用每次重装。现在按自用工具做,没有做签名、公证和自动更新,也没有对外提供下载。