内容的流转
本文档整理内容从入库 -> 报价 -> CAT 生产 -> 交付 -> 验收过程中涉及到的流程和接口调用。
入库
数据源通过一定的规则进入内容库,此时的逻辑还没有涉及传统本地化中的字数计算等业务,但是维护了标签生成规则(Tag Rules)。
报价
报价服务从内容库获取原文,需要处理三个问题,标签生成,词数,匹配度,从内容库拉取内容后,应当持久化到订单信息中。
标签的生成与词数计算
标签的生成和词数是计算匹配度的前置任务,这部分功能有内容服务提供。 当取得一个原文时候 比如 <p>Hello World</p>
Tag Rules 中有一组匹配标签的的正则表达式,例如:/<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>/g 首先应该将原文转换为一个对象
[
{"tagType": 4, "tagID": "lockedContent", "textEquivalent": "<p>"},
{"tagType": 0, "text": "Hello World"},
{"tagType": 4, "tagID": "lockedContent", "textEquivalent": "</p>"}
]计算词数使用剔除掉标签的部分也就是 Hello World 这部分计算词数和字符数。 报价服务使用Snapshot ID取得该结果,该接口应该支持可选的参数,名为额外的附加的正则表达式,因为当报价流转到PM重新报价时PM可以根据自己的经验再附加一些正则表达式,此时内容数据服务的生成带标签的原文使用的正则表达式应该是:Snapshot ID对应的Tag Rules + 额外的附加的正则表达式。 另外此时返回的内容应该包含一个在流程中可以识别的句段ID,这个ID会作为句段ID导入到CAT中,译员生产饭后,内容取译文也通过这个ID做对应关系。
注意: 为了避免前后端在正则引擎上的差异,这里建议前端使用re2js(https://re2js.leopard.in.ua/)后端使用re2j(https://github.com/google/re2j)以抹平不同语言在正则引擎上的实现差异。 最终内容接口的接受参数和返回的格式应该类似如下
接受参数
{
"repositoryID": "1234567890",
"snapshotID": "1234567890",
"additionalRegex": ["/<[^>]+>/g", "/<[^>]+>/g"]
}返回结果
{
"originalContent": "<p>Hello World</p>",
"wordsCount": 10,
"charactersCount": 10,
"taggedContent":
[
{"tagType": 4, "tagID": "lockedContent", "textEquivalent": "<p>"},
{"tagType": 0, "text": "Hello World"},
{"tagType": 4, "tagID": "lockedContent", "textEquivalent": "</p>"}
],
"segmentID": "1234567890"
}匹配度
匹配度是指原文与报价单中的匹配程度。 计算完词数后,调用批量匹配度计算接口,先调用语言资产服务,语言资产调用CAT Core接口。
持久化
以上的句段以及句段对应的计算结果,应当持久化到订单信息中。
CAT 生产
导入句段
项目管理部分会增加一个设置确认的按钮,对于用户来说表示任务工作流已经确认,任务拆分已经完成。确认后执行导入句段的操作。然后此时流程已经不可改,任务也不允许拆分了。
生产
译员填充译文,译员submit后不能再编辑,PM预览 submitted 的内容后,如果发现问题可以重新变更状态为 unsubmitted,然后译员可以继续编辑。
交付
当项目中所有任务都达到100%时候,需要在项目上点击完成按钮,点击完成时调用内容服务,将每个目标语对应的FileGuid,SubId,Slot(eg. flow-202404-edit),因为存在拆分任务,一个目标语可能有多条任务记录,结构类似于以下:
[
{
"targetLanguage": "zh-CN",
"tasks": [
{
"fileGuid": "1234567890",
"subId": 0,
"slot": "flow-202404-edit"
}
]
},
{
"targetLanguage": "ja-JP",
"tasks": [
{
"fileGuid": "1234567890",
"subId": 1,
"slot": "flow-202404-edit"
},
{
"fileGuid": "1234567890",
"subId": 2,
"slot": "flow-202404-edit"
}
]
}
]内容服务接口接收到TMS的导入请求后,如果是同步任务,则等待返回版本号,TMS将版本号存入项目信息中;如果是异步任务,则直接返回,后续异步任务成功后,更新项目的完成状态和版本号,然后在订单列表中点击交付按钮,此时前端获取对应项目的完成状态以及是否有版本号,没有不允许交付,可以交付的情况下,调用订单的交付接口,传递交付备注(Notes)和交付版本号。
验收
交付后订单转为带验收状态,此时客户点击预览按钮,拿到当前订单的验收版本号,跳转到内容库,内容库按版本号展示对应的内容,同时客户评估当前内容是否符合验收条件,如果符合,点击验收按钮,此时订单转为已经验收状态,内容库解锁。如果对交付物不满意,点击Reject按钮,内容库删除对应版本,订单状态转为生产中,订单对应的项目状态转为未完成,之前版本号清除,然后重复以上流程。直到验收通过。