国际化和本地化#
本节描述了为JupyterLab创建本地化字符串所涉及的各种元素。
JupyterLab 的国际化处理使用了四个元素:
language-packs 仓库:它包含 源字符串、它们的翻译、语言包以及用于 更新和发布翻译的 GitHub 工作流。
Crowdin项目: Crowdin 是一个基于云的解决方案,用于简化 JupyterLab 的本地化管理。这是贡献者可以翻译 JupyterLab 字符串的地方。
jupyterlab-translate 仓库: 定义帮助程序以处理国际化(例如提取字符串)的Python库。
Package template 仓库:它定义了一个语言包的 Python 包模板。
language-packs 仓库是主要的入口点。它与 Crowdin 交互以发布新的源字符串并获取最新的翻译。它还创建并更新语言包。最后,它发布这些语言包。所有这些操作都是使用在 jupyterlab-translate 和包模板中定义的助手来执行的。
工作流程#
接下来将按照通常调用的顺序描述工作流程。
注意
自动任务通过jupyterlab-bot执行。为此,该机器人可以访问GitHub仓库、Crowdin项目以及PyPI上的所有语言包项目。
源字符串生成#
源字符串是为JupyterLab和一系列扩展提取的,这些扩展的版本在language-packs仓库中的repository-map.yaml文件中定义。触发更新的工作流程如下:
编辑
repository-map.yaml,通过添加新的仓库和/或更新目标版本。在拉取请求中推送更改。
一旦拉取请求被合并,工作流 Update source strings 将自动触发。
该工作流将打开一个新的拉取请求,该请求将更新源字符串,并可选择更新Crowdin配置。
一旦该拉取请求被合并,Crowdin 将自动上传新的源字符串。
如果用户界面中的字符串位置发生了变化(或添加了新的界面组件),请考虑为Crowdin准备新的截图(见下面的注释),并直接将其上传到Crowdin(文件名应包含版本号),或在language-packs仓库中打开一个问题。
注意
在Crowdin上进行翻译可能会很困难,尤其是在没有足够的上下文信息时,特别是对于Jupyter特定的术语。 虽然一些技术熟练的翻译者会导航到代码库以检查字符串的上下文,但这并不是一个高效的工作流程, 并且阻止了其他翻译者的贡献。为了让更多的翻译者能够贡献,并实现更高的翻译准确性, 我们应该为翻译者提供特定可翻译字符串相关使用的带注释的截图 (参见Crowdin指南中的截图部分)。
注意
Crowdin 正在使用 GitHub 集成自动上传其源字符串,该集成已与 jupyterlab-bot 的 Crowdin 账户设置好。
用于此工作流的脚本是02_update_catalogs.py。
翻译更新#
新的和/或更新的翻译会自动推送到language-packs仓库。 工作流程如下:
贡献者在JupyterLab Crowdin项目上更新翻译
包含这些更改的新提交被推送到名为
l10n_master分支上的 language-packs 仓库。如果没有与该分支关联的拉取请求,将打开一个新的拉取请求。
维护者需要合并该拉取请求。
注意
Crowdin 正在使用 GitHub 集成 自动上传翻译,该集成已与 jupyterlab-bot 的 Crowdin 账户设置好。因此,提交和拉取请求归功于该机器人。
如果分支被删除,它将被重新创建。
警告
为了避免在那些翻译更新的拉取请求上发生合并冲突,它们应该在任何repository-map.yaml拉取请求之前合并,因为这些请求会更新源字符串。如果不这样做,更新源字符串的拉取请求需要被关闭,以便Crowdin集成重新打开PR。
语言包更新#
在发布包含来自Crowdin的新翻译的更新语言包之前,需要通过更新所有包的版本字符串来准备语言包。 这是通过手动触发Prepare language packs for release工作流来完成的。
有一个可选的设置:
新版本的格式为 X.Y.postZ 或一个 [hatch segment](https://hatch.pypa.io/latest/version/#supported-segments) - 默认是 rev,它将增加 post 编号。
工作流程是:
触发手动准备语言包发布工作流程
该工作流将打开一个新的拉取请求,包含对语言包的更改
验证工作流 检查语言包版本 应该通过该拉取请求
维护者需要合并拉取请求
注意
语言包的版本策略是遵循JupyterLab的主版本号和次版本号,并在任何中间更新时增加修订号。所有语言包的版本号相同,以便于维护。
用于此工作流的脚本是03_prepare_release.py。
语言包发布#
每次修改包版本时,创建发布并发布包将自动触发。其步骤如下:
检查所有语言包是否具有相同的版本
启动一个工作矩阵(每种语言包一个)
构建源代码和轮子工件
使用标签
@v 创建一个GitHub发布将工件发布到PyPI
添加新的语言包#
这需要执行以下手动操作(按此顺序):
在Crowdin上添加语言
执行语言包更新工作流程
手动上传包到PyPI
更新PyPI上的所有者,添加jupyterlab-bot为维护者
确认授予机器人的权限