软件本地化工作流程

学习本地化工作流程的最佳实践和建议。

本地化分支解释说

分支允许您创建翻译项目的单独版本。启用后,您可以创建和管理项目的多个独立版本。您可以在这些版本之间切换,删除它们,并将更改从一个合并到另一个。欲了解更多信息,请查看Lokalise分支

重要的是要明白,localise中的分支与Git等常用版本控制工具的操作方式不同。要记住的关键区别是:

  • 不可能恢复分支合并。
  • 不可能从非主分支创建分支。
  • 解决冲突的逻辑可能不同;参考文档了解更多信息。
  • localise中的分支不会自动链接到Git存储库或在Git存储库中创建,反之亦然。
    对于分支项目有一定的限制:
    • 有些动作和功能可能只针对某个分支;参考文档了解更多信息。
    • 某些操作和特性仅适用于分支,例如自动化定制的处理器,快照有关更多信息,请参阅文档
    • 限制用户对特定分支的访问是不可能的。团队成员将可以访问所有的本地分支机构。

本地化分支vs. Git分支

重要的是要认识到,在Lokalise和Git分支之间,可能在功能和冲突解决方面存在差异。本土化分支是专门设计的定位的目的

本地化分支的使用

本地化分支在以下场景中很有用:

  1. 当您希望在开发过程的早期阶段启动本地化时。
  2. 当您希望保留您的生产翻译,同时仍在进行新的翻译更改时。
  3. 当您要比较和测试两个翻译版本时。

在进一步研究这些场景之前,让我们仔细看看不使用Lokalise分支的典型开发和本地化工作流。

最后一步本地化工作流(没有本地化分支)

对于在Git特性分支中工作的开发人员,当本地化团队希望在特性接近生产时开始本地化时,建议使用以下流程。这是一个不需要使用Lokalise分支特性的工作流示例。

  1. 一旦一个特性的字符串准备好进行翻译,它们就会被提交到通过localise连接的Git分支中GitHub-like集成, localise可以检索相关的资源文件进行翻译。
  2. Lokalise将只有一个版本(),因为没有启用分支。
  3. 本地化管理人员可以从Git的翻译就绪/准备分支中检索最新的更改,并让翻译人员持续进行翻译更新。
  4. 翻译完成后,从Lokalise向Git中准备翻译的分支发出一个pull request (PR)。PR被审查、提交,整个分支被合并到Git的主分支中,创建本地化特性的新版本。
  5. 开发人员可以使用Lokalise APICLI自动获取最新的翻译用于部署或测试,无需手动从Lokalise检索更改并在GitHub中创建PR。
  6. 为了持续开发和本地化,可以创建仅包含翻译、审核或批准的翻译的PR。

发展阶段定位

考虑这样一个场景:开发人员在GitHub中处理单独的功能分支,并将它们直接合并到主分支中,而不需要首先建立一个单独的翻译准备分支来积累所有更改。如果团队想要开始本地化,而开发人员则继续致力于独立分支,那么在功能完全开发之前,可以采用替代方法,无论是否使用Lokalise的分支功能。

通过本地化分支

GitHub仓库中的多个分支可以与Lokalise中的多个分支连接,每个分支一个分支(例如:主要在GitHub连接到分支机构)。

重要的是要记住,Lokalise分支仅用于本地化,而不像GitHub中的分支那么高级。两者的特点和解决冲突的方法并不相同。建立分支合并的真实来源是至关重要的,建议使用GitHub。

使用本地化分支有两种方法:

  1. 在本地化中合并内容(不推荐)
    不建议这样做,因为合并特定功能分支的GitHub流程无法在Lokalise中复制(除非您使用Lokalise创建一个自定义流程,类似于Lemonade在其案例研究).

  2. 合并在GitHub
    在GitHub中合并分支可以更好地控制合并场景和预期行为。在GitHub中也可以逆转分支合并,而这在Lokalise中是不可逆的。

为了避免Lokalise和GitHub之间的差异,最好在分支合并期间依赖GitHub来解决冲突,而不要在Lokalise中合并。以下是可能的工作流程:

  • 在Lokalise项目中启用分支
  • 在Lokalise中为每个GitHub特性分支创建一个分支,其中包含可本地化的内容
  • 保持主分支在洛杉矶的清洁
  • 对于任何内容更改,请在Lokalise中创建新的分支,并将其用于翻译任务
  • 从localise分支导出内容到GitHub分支
  • 在GitHub中合并分支到main(依赖GitHub解决冲突)
  • 在GitHub中合并完成后,删除Lokalise中的功能分支
  • 将新的GitHub main拖到Lokalise master中,这可能会覆盖Lokalise中的更改

请注意建议的方法是保持Lokalise主分支干净,并在新分支中进行所有更改,以避免丢失在GitHub中不存在的Lokalise主分支上正在进行的任何工作。

没有本地化分支

你可以达到同样的结果使用标签区分特定分支的内容

例如,您可以向翻译键添加一个标记,以指示它首次引入的分支。另外,您可以添加标记来指示翻译键的状态,例如“工作进行中”、“已发布”或“过时”。

例如,您可以使用标记来标记翻译键及其原始Git分支及其在开发过程中的进度。您可以使用像“feature-1”、“work in progress”、“production”和“obsolete”这样的标签。

当下载内容时,例如在GitHub中创建pr,您可以选择在下载包中包含标签或从下载包中排除标签。这使您可以灵活地筛选匹配所需作用域的键。例如,您可以导出具有特定特性分支标记和“已审阅”状态的所有密钥。或者,您可以导出包含暂存所需的所有内容的下载包的所有密钥(或标记为“工作进行中”的密钥)。这可以通过Lokalise的UI、API或CLI完成。

通过使用标签进行分支

欲了解更多信息,请阅读“通过使用标签和单独的项目进行分支”这就涵盖了主题。

本地化测试阶段

在Lokalise中使用分支的另一个原因是维护两个彼此独立的不同版本的内容:一个版本是干净的,并已将所有翻译部署到生产中,而另一个版本则有正在测试的更改。

可以通过各种方式管理不同的内容版本(生产版本和登台版本)。

通过本地化分支

Lokalise分支特性有一个建议的流程来保持Lokalise主分支的整洁,并与Git主分支中发布的内容保持同步。应该在Lokalise的“测试”分支中进行更改,该分支可以与客户的登台环境同步。一旦变更被批准,“测试”分支被合并到Lokalise主分支中,用所有变更替换它。

下面是一个可能的工作流程:

  • 在Lokalise中启用分支
  • 保持本地化分公司清洁
  • 创建一个测试暂存在洛杉矶的分公司
  • 翻译修改后的内容测试分支
  • 导出测试将内容从localise分支到Git暂存进行测试
  • 合并测试分支到Lokalise在接受所有更改时创建分支
  • 导出本地化将内容分支到Git主要分支

此工作流将分支合并的冲突最小化,并通过仅在测试分支上进行更改来创建更可预测的过程。但是,请注意,分支合并不能在localise中恢复。要在Git中恢复合并,需要在Lokalise中手动进行相同的更改通过将文件上传到localise并手动覆盖更改。

交换本地分支:
使用Lokalise的分支作为GitHub中的一个临时分支,以充分利用Lokalise的功能,如自动化、快照和自定义处理器,这些功能只支持主分支。在Lokalise中创建一个独立的非主分支,作为GitHub中的生产分支。流程如下:

  • 在Lokalise中启用分支
  • 创建一个名为主要
  • 使用Lokalise的默认分支()作为暂存分支,并与Git暂存分支同步
  • 同步Lokalise的主要用Git创建分支(非主)主要分支
  • 在Lokalise上进行所有更改分支(例如添加原始内容并使用自动化进行预翻译),然后导出相同的内容用于测试
  • 测试之后,合并Lokalise分支到Lokalise主要分支,并从Lokalise推送内容主要分支到Git主要分支。

没有本地化分支

如果您只想在将更改发布到生产环境之前在登台环境中测试更改,那么您也可以在不使用Lokalise分支的情况下实现类似的工作流。

基于标签的方法+翻译过滤器:
如前所述,标记可用于区分不同分支中的翻译键,如这篇文章

在GitHub PR中包含或排除翻译键是可能的,但也有必要过滤哪些翻译应该包含在PR中。

下面的例子说明了如何使用Lokalise过滤和导出翻译:

开发人员添加了一个带有英文源副本“Hello world”的键。语言学家将其翻译成西班牙语“Hola Mundo”,利益相关者(如文案、QA、法务)审核后将其标记为“已审核”。

使用Lokalise的UI、CLI或API,您可以在下载过程中使用标签和翻译状态过滤包。如果您使用诸如“所有”翻译、“仅审查”翻译或“最后审查”翻译等过滤器导出内容,则该键及其西班牙语翻译“Hola Mundo”将包含在拉取请求(PR)中。

如果将源副本更改为“Hello, my world”,并将翻译更改为“Hola, mi mundo”,则这将成为最新的当前版本,但审批人尚未将其标记为“审阅”。

要导出已批准的内容(例如,用于生产的内容),您可以在导出时使用“last review”过滤器。在这种情况下,“hello Mundo”翻译将在资源文件中返回,因为“Hola, mi Mundo”尚未被审阅。

为了进行测试,你可以从Lokalise下载一个带有“全部”翻译的文件,Lokalise将采用最新的翻译版本,即“Hola, mi mundo”。可以将此资源文件发送到登台环境中进行测试。

您还可以使用Lokalise CLI和API端点来创建依赖于不同翻译过滤器的管道,例如,“所有”翻译被下载并发送到“staging”,而“上次审查”的翻译被发送到生产环境。

一旦“你好,我的世界”被标记为已审查,它将在未来下载的文件中被“上次审查”过滤器选中。

使用标签、翻译状态和导出选项的组合,您可以(例如):

  • 用“last-reviewed”字符串标记为“production”的导出键,以获得GitHub中最接近主版本的版本
  • 导出所有密钥和所有翻译,以获得GitHub中最接近分期的版本(包含所有最近的更改)