20个项目,20种语言,昨天截止

想象一下:您有7个开发团队,总计100多人。 他们同时看到了13个应用程序。 工作在20个存储库中进行。

所有应用程序都需要翻译。 有些使用6种语言,有些使用20种语言,有些使用13种语言,但这是一组完全不同的语言,以前的20种语言中未包含。

由于行格式不同,每个人都有不同的堆栈:js,json,ts,yaml或yml。 还有一些仍然将其文本保存在数据库中。

您从事敏捷工作:每日价值交付,两周冲刺。 DoR包括所有必要的翻译。 好吧,当然,昨天需要翻译才能有时间进行测试。

图片

有一个技术作家部门。 谁是技术作家? 这是写外部文档(有时是内部文档)的人。 编写用户或合作伙伴可以看到的各种文本:前端文本,消息文本,API响应,错误。 伴随着开发过程,沉浸在技术和业务逻辑中。 并提供及时的翻译到应用程序。

还有撰稿人,翻译和本地化经理的职位。 这个人用英语创建所有文本,还监视翻译的一致性,任命翻译人员并解决所有相关问题。
请注意,问题是:为了避免阻碍开发并且不会损害整个技术部门,需要多少技术规格,撰稿人和本地化经理?

在我们的案例中,我们管理了4个技术服务和1个文案本地化经理。 平均而言,转帐的交付时间为一个工作日,且不得超过三个工作日。 希望您觉得有趣。

我们怎么来的?


6年前,我们曾在Google表格和数据库中工作。 也就是说,如果在开发过程中出现了要翻译的行,我们将它们复制到平板电脑中,然后通过邮件发送给翻译。 翻译准备就绪后,将其手动倒入数据库中。 该解决方案的唯一优点是您无需重新布局应用程序即可看到新行。 但是,如果翻译中有错误,将无法回滚。 没有翻译记忆库,没有词汇表。 通过注视法可以实现翻译的一致性。

第一次尝试


使该过程自动化的第一个版本如下所示:当开发人员有行时,他将其添加到特殊翻译库中的新分支中进行翻译。 然后,在同一分支中,启动了一个管道,该管道通过API发送了所有diff行以进行翻译。 是的,翻译本来应该已经回到数据库了,但是它无法通过API将来自外部资源的行加载到内部数据库。

这种整合带来了什么? 删除了一个步骤,在该步骤中,技术作者需要将所有内容收集到一张表中,手动发送,然后按应用程序和语言数量划分接收到的翻译。 在这种情况下,这些行将立即作为与目标应用程序同名的项目的一部分发送以进行翻译。 结果,技术作者收到了针对每个要执行其工作的应用程序的存档。 这大大减少了体力劳动的比例。 另外,翻译记忆库是在提供方上实现的。 但是,该解决方案还存在许多缺点:将行存储在数据库中并不允许我们进行全面的行管理,并且仍然意味着大量的手动工作。

痛苦和持续的本地化


以下集成给开发人员带来了很多痛苦。 在我看来,那些抓住它的人仍然对“本地化”一词感到抽搐。 这是与Serge和Smartcat的首次集成。

图片

在这里重要的是要告诉Serge和Smartcat是什么。

Serge是支持git的实用程序。 她知道如何从分支中获取必要的行,将其发送进行翻译,然后将相同行的翻译仅返回到同一分支。 我们还需要一个插件,该插件将调用我们在其中转换的CAT系统的API。 插件应该从Serge接收新行,并将准备好的翻译返回给Serge。

Smartcat是CAT系统,支持词汇表,翻译记忆库和占位符。 此外,Smartcat可以汇总和简化与自由职业者的和解流程,支持翻译供应商之间的联系。

在这一步,我们将行从数据库转移到项目存储库。 现在必须直接从应用程序存储库发送字符串,然后将其返回。

可以这么认为:开发人员知道他是从哪个分支创建其功能分支的,这两个分支之间的资源文件中的差异正是需要翻译的内容。 当开发人员具有一组要翻译的行时,他将使用Serge配置在其分支中开始工作。 Serge计算差异,提取新行,调用插件并发送行进行翻译。 转换准备就绪后,开发人员将调用以下任务:他部署上一步中创建的Serge实例,接收完成的转换并将它们提交到源分支。

结果证明解决方案是不稳定的:不是要在每次启动管道时从头开始部署Serge,开发人员不想考虑分支之间的差异,并且Smartcat插件迫切需要更新和改进。 交付新生产线的过程可能需要几个小时。 而且,这并不总是成功的。

从理论上讲,该过程的所有阶段都是自动化的,实际上,维护,在管道启动之前计算差异和进行故障排除要比完全手动完成同一任务花费的时间更长。

隧道尽头的光


到2018年8月,我们已经启动了最新版本的集成。 我们有一个本地化服务器。 在每个存储库的服务器上,都有一个单独的Serge实例。 Serge扫描存储库中的所有分支,发送新行进行翻译,并将完成的翻译提交到原始分支。 在当前的集成中,一切都是快速而稳定的。 创建翻译分支后,这些行会在5-6分钟内显示在Smartcat中。 确认传输后,提交会在相同的5-6分钟内类似地发生。 翻译的交付时间仅受人为因素限制:翻译人员的工作量,时区差异等。

在以下文章中,我将告诉您如何从头开始配置Serge-Smartcat-Gitlab集成,以及我们如何解决各种非标准任务。
延续:
20个项目,20种语言,截止日期为昨天。 第二部分
20个项目,20种语言,截止日期为昨天。 第三部分

Source: https://habr.com/ru/post/zh-CN445532/


All Articles