软件本地化工作流程
学习本地化工作流程的最佳实践和建议。
本地化分支解释说
分支允许您创建翻译项目的单独版本。启用后,您可以创建和管理项目的多个独立版本。您可以在这些版本之间切换,删除它们,并将更改从一个合并到另一个。欲了解更多信息,请查看Lokalise分支.
重要的是要明白,localise中的分支与Git等常用版本控制工具的操作方式不同。要记住的关键区别是:
- 不可能恢复分支合并。
- 不可能从非主分支创建分支。
- 解决冲突的逻辑可能不同;参考文档了解更多信息。
- localise中的分支不会自动链接到Git存储库或在Git存储库中创建,反之亦然。
对于分支项目有一定的限制:- 有些动作和功能可能只针对某个分支;参考文档了解更多信息。
- 某些操作和特性仅适用于主分支,例如自动化,定制的处理器,快照;有关更多信息,请参阅文档.
- 限制用户对特定分支的访问是不可能的。团队成员将可以访问所有的本地分支机构。
本地化分支vs. Git分支
重要的是要认识到,在Lokalise和Git分支之间,可能在功能和冲突解决方面存在差异。本土化分支是专门设计的定位的目的.
本地化分支的使用
本地化分支在以下场景中很有用:
- 当您希望在开发过程的早期阶段启动本地化时。
- 当您希望保留您的生产翻译,同时仍在进行新的翻译更改时。
- 当您要比较和测试两个翻译版本时。
在进一步研究这些场景之前,让我们仔细看看不使用Lokalise分支的典型开发和本地化工作流。
最后一步本地化工作流(没有本地化分支)
对于在Git特性分支中工作的开发人员,当本地化团队希望在特性接近生产时开始本地化时,建议使用以下流程。这是一个不需要使用Lokalise分支特性的工作流示例。
- 一旦一个特性的字符串准备好进行翻译,它们就会被提交到通过localise连接的Git分支中GitHub-like集成, localise可以检索相关的资源文件进行翻译。
- Lokalise将只有一个版本(主),因为没有启用分支。
- 本地化管理人员可以从Git的翻译就绪/准备分支中检索最新的更改,并让翻译人员持续进行翻译更新。
- 翻译完成后,从Lokalise向Git中准备翻译的分支发出一个pull request (PR)。PR被审查、提交,整个分支被合并到Git的主分支中,创建本地化特性的新版本。
- 开发人员可以使用Lokalise API或CLI自动获取最新的翻译用于部署或测试,无需手动从Lokalise检索更改并在GitHub中创建PR。
- 为了持续开发和本地化,可以创建仅包含翻译、审核或批准的翻译的PR。
发展阶段定位
考虑这样一个场景:开发人员在GitHub中处理单独的功能分支,并将它们直接合并到主分支中,而不需要首先建立一个单独的翻译准备分支来积累所有更改。如果团队想要开始本地化,而开发人员则继续致力于独立分支,那么在功能完全开发之前,可以采用替代方法,无论是否使用Lokalise的分支功能。
通过本地化分支
GitHub仓库中的多个分支可以与Lokalise中的多个分支连接,每个分支一个分支(例如:主要在GitHub连接到主分支机构)。
重要的是要记住,Lokalise分支仅用于本地化,而不像GitHub中的分支那么高级。两者的特点和解决冲突的方法并不相同。建立分支合并的真实来源是至关重要的,建议使用GitHub。
使用本地化分支有两种方法:
在本地化中合并内容(不推荐)
不建议这样做,因为合并特定功能分支的GitHub流程无法在Lokalise中复制(除非您使用Lokalise创建一个自定义流程,类似于Lemonade在其案例研究).合并在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中最接近分期的版本(包含所有最近的更改)
更新 17天前