自动化机器翻译小试

今年过年的时候,网站服务器意外升级了。新版的PHP不再支持我过时(4.x)的WordPress(WP)系统。以前部署的html服务也大多无法使用。只好借此机会对网站做全面升级。WP系统更新相对容易。不过以前的主题和插件大都不兼容新版系统,不得不寻找新的替代品。折腾了几天之后,网站总算能用了。只有相册系统没找到特别合适的方案。WP的相册插件有很多,可是免费的效果不好,收费的插件又过于复杂。我之前用的NextGEN 图库,体验并不算好,想借着这次升级弄得顺眼些。

Internet Archive中收录的相册页面存档


于是去找开源的解决方案,发现zenphoto看起来简洁清爽,似乎很合适。就在Linux下用XAMPP部署测试了一下(虽然也有docker镜像,但总觉得调试起来比较麻烦),功能设计都很顺手,只是最新版没有中文翻译。我看了一眼zenphoto的本地化文件,发现有个3年前的香港译本,觉得更新一下也花不了多少时间。后来我才意识到自己虽然已经不年轻了,可还是会把问题想得太简单……

香港译本只包含2991个条目的翻译,而且很多专业名词都和大陆习惯不一样。而zenphoto最新的1.59版的本地化po文件中已经有超过5500条待翻译条目。我找出了十来年没碰的Poedit试着改了几个小时,才更新了几百条,发现其中有大量类似“prev”(上一条),“next”(下一条)的简单记录,人工翻译枯燥乏味。便想着借助自动翻译帮忙,Poedit无缝支持机器翻译,不过是收费服务。中文网络中倒是有个基于AutoHotKey的自动脚本(外挂),能够将网页翻译结果自动复制粘贴到poedit中。我试了一下,发现它的表现并不稳定,总是莫名卡住。还是老老实实去找开源方案,发现基于python 的 Translate Toolkit支持po和csv格式的相互转换,而 deep-translator 包可以支持Google,Microsoft,DeepL, Yandex 等多个引擎的机器自动翻译。接下来,只要把csv记录逐条发送给机器翻译引擎可以了。

表现较好的翻译引擎因为用户很多,通常需要申请专门的接口,也就是API。目前翻译质量最高的DeepL没有中国销售服务,只接受外国信用卡注册认证;谷歌服务在国内用不了;于是我在微软云计算平台Azure上申请了帐号,参考官方教程在异常复杂的用户面板中艰难地完成了翻译API的申请。终于拿到了可以被放到deep-translator语句中的宝贵token(也可以仿照官方示例编写自己的脚本)。作为对比,我也在百度翻译开放平台上申请了密钥,相比之下流程容易得多。接下来的事情就简单了,Python脚本在几十分钟内自动完成了全部记录的翻译。在这个特定的项目中,微软的翻译结果整体要自然一些。不过因为所有的翻译都是逐行提交的,会有名词概念前后翻译不一致的情况。而且自动翻译对语句中的代码标签处理还不是很完善,有时会影响语法。于是我又花了半天时间审校核对。全部完成之后,终于将本地化文本提交给github上的zenphoto代码仓库,也算对开源社区有所回馈。

就在我终于完成了本地测试,准备在线上部署相册的时候,赫然发现这里的服务器环境不支持 gettext()函数,完全无法载入本地化语言文件…… 所以,这是个悲伤的故事。我的相册一时半会是回不来了,不过这段机器翻译自动化的体验倒值得记录一下。

订阅评论
提醒

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
Henry
2022 年 9 月 10 日 15:47

已经很厉害了!