FdyCms4.0文档批量翻译的探索与实现

方滴云WEB2022-07-29 09:48

今天要说的,其实是对已发布文档进行多语言重新发布的操作。因为我们这是一个老站迁移,对于已经存在的文档 ,我们经过研究后,决定写一个功能实现自动化翻译并重发。

整个实现原理,在上一篇《FdyCms4.0百度通用翻译与文档翻译的简单应用》一文中已经提及过,大致分为三部现实现。

第一,根据栏目查找对应栏目下的文档;

第二,将每个文档中普通字段的内容通过普通翻译接口进行翻译后,重新组装数据并写入对应数据表;

第三, 对于文档中的富文本则生成一个本地文件上传到文档翻译接口中进行翻译,由于本接口是异步的,所以我们要把一些准备数据存在翻译日志表中,然后在回调中去完成后续的操作。

整个过期的实现还是挺愉快的,只是有一个地方一直有问题。就是在做富文本翻译时,因为我们要同时翻译成中文、俄语与西班牙语,这里是通过循环请求的方式实现的。

同时,在发送第一个请求时还要生成请求文件,最后的结果就是请求的回调中,第一个语言的回调一直是不执行的,错误日志中也没有任何提示,但是用日志的回调链接重新请求,结果一切正常。

初步估计可能是测试服务器配置太差,对于这种有点并发且操作有点复杂的请求,有点吃不消,正式项目中,我们会使用消息列队来完成。最后上一个成果图吧,更多细节日后爆料。

补充于2022年7月28日

关于上述提及的批一种语言回调不执行的原因,最近在整理源代码时发现了主要原因。我们在批量翻译时,会先把翻译请求返回的requestId与文档的一些基本信息写在翻译日志中,等回调时再去更新翻译日志的状态与字符数量等信息。

但是在代码实现时,我们翻译请求完成后,并没有直接写入翻译日志,而是等所有请求完成后,再一起写入。这里就会有问题了,因为极有可能日志没有完入,回调就已经来了,如是就有了上面的事故。