Skip to content

内容的流转

本文档整理内容从入库 -> 报价 -> 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按钮,内容库删除对应版本,订单状态转为生产中,订单对应的项目状态转为未完成,之前版本号清除,然后重复以上流程。直到验收通过。

流程图

内容流转流程图