如何以20种语言连续发布产品而不死?

在本文中,我们将描述如何将移动项目的本地化转换为Smartcat,最初遇到的麻烦以及如何处理它们。

图片

我们是谁


大家好!我们是卡巴斯基实验室(文档和本地化部门)的Ekaterina Galitskaya和Daria Egorushkina。更具体一点:我们工作的团队负责编写和本地化界面文本,并为移动应用程序提供帮助。


改变的主要诱因是发展需求。每两周一次开发切换到频繁发布。范围缩小了,但是他们开始更频繁地翻译,因此我们不得不更快地进行翻译。实际上,本地化已成为发展的瓶颈。而且,如果以前项目经理甚至都不知道本地化人员的姓名,但为什么根本不知道本地化人员的名字,因为翻译本身神奇地出现了,现在几乎每个人都意识到了问题,甚至知道什么是语言测试:)

源数据。

时机


本地化周期耗时3周:

  • 3-5天-转移;
  • 2周-语言测试。

有了翻译,一切都变得清晰了,但是为什么要进行语言测试,这又意味着什么呢?

语言测试的主要目标是在上下文中检查翻译,即真正进行本地化。译者知道我们的术语,但他们仍然只是翻译了文本,却没有看到紧随其后的是按钮还是标题。

此外,通过语言测试,您可以发现不一致之处,翻译不足,未排成一行的文本(硬编码文本),降低法律风险(例如,当付款文本未放在正确的字段中)。语言测试通常使用屏幕截图进行。

卷数


有一个神话,如果应用程序是移动的,那么它很小,那么该翻译什么呢?
哈哈 一些统计:

  • 界面中的文本-项目中平均25,000个单词;
  • 10个应用;
  • 每个项目中平均有19个本地化版本;
  • 更新界面中的文本,每周翻译文档。

为什么不能加速?


让我们看看本地化的每个阶段都由什么组成。翻译步骤(9个步骤):

  1. 从不同的早午餐中手动选择VCS;
  2. 手动创建翻译增量;
  3. 创建翻译包;
  4. 上传到FTP;
  5. 给代理机构,自由职业者和地方办事处写大量信;
  6. 从FTP传输完成后,上传到CAT,进行检查;
  7. 放入VCS中-不要在早午餐中感到困惑;
  8. 开始组装,修复错误,重建组装;
  9. 在必须重新启动翻译过程的情况下,请启动其他翻译并修复错误。

翻译阶段的问题:简而言之,这是旧流程的局限性,并且在使用旧CAT时需要进行大量日常工作:

  • 不支持从多个早午餐中收集行-所有早午餐的翻译增量都是手动形成的,而翻译则是手动安排在早午餐中的。这很难维护,容易困惑,也无法忘记这种恐怖。
  • 在手动模式下无法在项目和语言中保持一致性。
  • 您不能并行运行并行翻译-在翻译过程中更新源资源。首先必须获得第一批翻译,然后再开始其他翻译。
  • 由于变量错误,撇号和其他本地化错误导致的组装失败案例变得更加常见。

语言测试阶段(19个步骤):

  1. 运行程序集并等待它。
  2. , .
  3. , -.
  4. .
  5. 20+ .
  6. , .
  7. — .
  8. FTP.
  9. .
  10. .
  11. .
  12. .
  13. ( ).
  14. .
  15. ( , ).
  16. .
  17. FTP.
  18. .
  19. (, ) .

语言测试阶段的问题:手动截图占据了大部分时间。如果该功能具有约40个屏幕和20种语言,则它可能需要长达70个小时的手动屏幕截图。

此外,还有一个人为因素。

每三个月执行一次这些步骤是一回事。另一件事是每两个星期重复一次。每次进行新的迭代时,定位器都会陷入例行沼泽-send-accept-remove-repeat。

我们必须寻找一种解决方案,同时又要很快。解决方案有哪些?它可能是:

  • 雇用更多的学生;
  • 减少本地化工作的数量(从而减少浪费的质量);
  • 自动执行日常任务。

我们选择了后者。

你想要什么


我们没有一百年的时间坐下来,倒一杯咖啡,袖手旁观,并开始在一年内分析整个云解决方案市场。我们正在寻找现成的解决方案,明天开始工作。我们的目标是解决问题。

我们还有什么其他要求:

  • 批准减少:为了避免等到购买达成协议后,他们会写出密钥,仅此而已。
  • 准备好基本功能 l:坐下来开始做。不需要从头开始编写。稳定。其余的可以沿途扭曲。
  • 再次,它不需要巨大的服务器容量:这样就不会因冗长的批准而陷入困境。
  • 廉价(最好免费)启动该服务。
  • 不需要内部开发人员:也就是说,有足够的服务器端支持以及可以自行部署的能力。
  • 服务符合内​​部安全性要求:我们连接到服务,而不是我们。
  • 支持同时使用多个早午餐:并行翻译多个功能。
  • 并行启动附加传输

在各种选择中,我们最仔细地研究了Zing(Evernote开发人员提供的翻译服务)。

来自专业人士
  • 自己的可定制性;
  • 免费安装包-仅需要服务器容量;
  • 没有月租费;
  • 连接您的翻译人员;
  • 私人访问权限(可以在内部托管)。

缺点:为了连接翻译器并打开它们的访问权限,必须至少连接两个单元。是什么在时间和资源上急剧增加了服务成本。 


你选择了什么


由于我们无法将CAT系统直接连接到内部版本控制系统,因此我们需要一个不同的连接器。您可以写自己或参加现有的活动。因此,我们测试了一堆Git-Serge-Smartcat。

来自专业人士

  • 支持使用多个早午餐。
  • 动态更新资源。
  • 独立于CAT解析器(在我们这边编写配置文件)。Smartcat会保留PO文件。
  • 与自由职业者的往来实际上是“在一个窗口中”。
  • 搜寻和选择自由职业者(直接交流,选择项目需求-在我们的情况下,翻译的速度和质量很重要)。
  • 您可以在一个帐户中支付所有语言和项目的工作费用。
  • 应我们的要求,他们提出了开发新功能的优先事项:引入了新功能(在所有项目文件中进行文本搜索等),修复了一些问题。
  • 快速技术支持-帮助设置。
  • 实际上免费访问该服务(订阅是可选的)。
  • 检查。

缺点

  • 整个项目中没有文本搜索(项目中可能有超过1000个文件)。但是Smartcat开发人员在去年年底引入了此功能。
  • 您不能在一个浏览器选项卡中打开多个文档。
  • 一种语言的资源文件(使用Smartcat编写的文档)最多可以包含200个。用户需要在检查了屏幕截图中的文本后对译文进行更正。用户不知道该段在哪个文档中。因此,用户需要打开所有200个文档并寻找该行。
  • 对于自由职业者的通知仍然存在问题:他们将其关闭,并且不会收到有关文档更新的通知。在这种情况下,我们仍然在聊天中编写。

做了什么以及如何成为


简要地说-更改了使用界面文本的过程:)做了什么:

  • 测试了一堆Git-Serge-Smartcat。
  • 我们与开发人员就编写者和本地化人员的早午餐命名规则达成了一致(这对于删除与开发人员的对应关系以及为locobot配置规则是必要的)。
  • ( 25  — , 20+ ).
  • Smartcat, Serge.
  • .
  • Serge: ID , , .
  • cron, () .
  • - ().
  • , : , , .
  • Monorepo: Serge .
  • 我们的开发人员已基于Kaspresso框架实现了功能截图这不仅使我们可以解决自动截屏*的问题,而且还可以为翻译人员提供上下文。因此,对于文件中的每一行,都会添加指向屏幕截图的链接,以了解在何处以及如何使用此新行。当带有换行符的文件“飞往” Smartcat时,指向屏幕截图的链接将落入“分段注释”字段中。

现在的本地化形式(所有步骤需要9个步骤):

  1. 作者在Git中提交了新行。字符串会自动处理并在Smartcat中飞走。
  2. 本地化人员指定翻译人员(此步骤将很快消失,这是Smartcat的真实代表吗?)))
  3. 译者不仅翻译那样,还翻译了屏幕截图-即上下文。
  4. 本地化人员检查翻译(制作完整文件)。机械手不是按行取回翻译,而是在整个文件上的工作完成时取回。翻译自动飞回并提交给Git。
  5. 本地化程序会运行自动截屏。
  6. 本地化者将屏幕截图上传到FTP。
  7. 本地化人员回答语言学家的问题。
  8. 本地化程序(如有必要)对Smartcat进行更改。编辑将自动提交给Git。
  9. 本地化器关闭拉取请求。

当然,仍然存在自动化和改进的领域。但是您已经可以感觉到与最初的区别。

什么是Serge


这是一个开源解决方案,是版本控制系统(SVN,Git,Gerrit(基于Git的代码审查系统),Mercurial)和TMS(在我们的情况下为Smartcat)之间的连接器。

为什么我们要“登录”:所有云TMS都有开箱即用的连接器。但是,这种盒装连接器直接连接到存储库。在我们的情况下这是不可能的。有什么选择:

  • 披露部分版本控制系统;
  • 克隆带有资源文件的文件夹以供公众访问;
  • 在发送到TMS之前先接收和处理资源文件,然后再导出到TMS。

揭示系统的一部分是有风险的。

可以克隆,仅此需要临时和人力资源。

Serge能够接收资源文件并在发送到TMS之前对其进行处理。结果,体系结构如下:Git-Serge-TMS。

Serge从Git获取文件,并根据某些规则对其进行处理。然后它将它们转换为PO格式,并将其发送到Smartcat。Serge从Smartcat获取翻译的PO文件,将其转换并提交到Git。

另外,Serge对我们来说最大的好处就是它已部署在公司内部。因此,整个“厨房”都留在石墙后面。什么秘密都没有出来:)

主要特点:

  • 通过文件和资源字符串ID匹配目标。
  • 通过路径中的掩码或内容选择文件的能力。
  • 在解析之前/之后处理资源文件的内容。
  • 配置解析器。

您可以在网站上了解Serge的其他功能或观看视频

摘要


最重要的是,在相对较短的时间(约三个月)中,我们解决了问题,不再是一条狭窄的脖子。

结果和数字


阶段多少小时了(2018)多少小时了(2019年底)
从所有早午餐中收集行。手动地1个0
仅获取新行或更改过的行进行迭代,并加载到20种语言的旧CAT工具中40.25
创建翻译包。重复20种语言。0.50
为代理商/翻译员设置任务。1种语言= 1个代理商。20
下载包含每种语言的FTP翻译的软件包。重复20种语言。0.50
注销,从代理商/翻译人员那里确认任务已完成。重复20种语言。2-30
回答翻译者的问题。重复20种语言。2-40.5
接受每种语言的翻译1个0.25
运行构建<8(编辑旧CAT工具中的错误)0.25
附加翻译(重复以上所有操作)80.25
获取屏幕截图16-32(手动操作)8(自动截图)
上载到FTP81个
与代理商/自由职业者聊天81个
编辑资源82
倒入git中的更改80.25
纯粹的时间8414

奖金:

  • 程序集不会掉落:将变量,不可翻译的单词放在占位符中,在解析器应用阶段转义撇号。
  • 我们不从测试人员中选择设备。
  • 我们不会在开发人员和测试人员身上浪费时间来修复程序集或弄清楚如何截取一个或另一个屏幕截图。
  • 上下文翻译:英文屏幕截图已处于翻译阶段,可以轻松打开和查看。
  • Smartcat可以将未翻译的段变成严重错误-他们从旧CAT中找到了一些重要的代码。

另外,一堆Git-Serge-Smartcat允许将UX编写器的工作转换为Smartcat。我们是如何做到的,我们将在下一篇文章中讲述:)。

* 有关自动截屏的更多信息:我们的同事编写了自动测试程序,并创建了Kaspresso(自动测试框架)只是在上面制作了自动截图,我们在本地化中使用了它。作为自动测试的副产品。

All Articles