跳转到: 导航, 搜索

I18nTeam/Migration-to-weblate

迁移到 weblate

参与迁移项目的人员

  • Ian Y. Choi (经理)
  • Seongsoo Cho
  • Kuemjong Jeong
  • Nayeon Kim
  • Sion Shin
  • Gwangil Kim
  • DaGyeong Kim

规划 weblate 迁移计划

您可以在下面找到有关每个任务的更多详细信息。

  • 定义目标测试项目的范围
    • 全部 vs. 少数项目(例如,openstack-manuals、nova、i18n、horizon)
  • 使翻译基础设施脚本与 Weblate 兼容
    • 如果目标项目在平台上不存在,则使用设置创建 Weblate 项目
      • (如果不支持,Weblate 项目将手动创建)
      • 由于脚本每天 06:00 UTC 执行,因此需要在本地执行测试。
  • Zuul 集成测试
    • 确定何时测试(例如,无需等待 06:00 UTC 的测试方法?)
    • 与所有翻译目标项目进行集成测试
  • 制作从 Weblate 提取统计数据的工具


行动项

定义目标测试项目的范围

  • 使用 Zanata 中设置的信息配置 Weblate。
  • 用户信息不会迁移。

使翻译基础设施脚本与 Weblate 兼容

Zuul 集成测试

创建一个 ZuuL Job,执行以下任务

  • 当项目发生新的更改时,将翻译文件上传到 Weblate
  • 每天 06 UTC 从 Weblate 上传翻译到您的项目

制作从 Weblate 提取统计数据的工具

项目列表和状态

迁移范围

项目 数量
总项目数 127
总版本数 12
总语言数 54
版本

我们根据当前存在于主要服务中的分支确定了迁移版本。请注意:某些项目可能没有此分支。

要迁移的版本

  • master
  • stable/2025.2
  • stable/2025.1
  • stable/2024.2
  • stable/2024.1

注意:“unmaintained/*”分支不包含在迁移范围内。

命名约定

项目、类别名称
  • Zanata 的项目名称映射到 Weblate 项目名称
  • Zanata 的版本名称映射到 Weblate 类别名称
组件名称

在 Weblate 中,组件不能具有相同的名称。

虽然 Zanata 根据文档路径区分组件,但 Weblate 使用组件名称进行标识。因此,当一个项目有多个模块时,Weblate 无法使用相同的组件名称。


为了解决这个问题,我们定义组件名称为:`<module_name>-<project kind>`

Zanata Weblate(冲突) Weblate(已修复)
horizon/locale/django django(冲突) horizon-django
openstack_dashboard/locale/django django(冲突) openstack-dashboard-django

注意:组件使用“-”作为分隔符。

语言
  • 遵循 Zanata 的语言代码约定
  • 语言代码的格式为:language_COUNTRY
    • 语言名称:小写(例如,en、ko、ja)
    • 国家/地区名称:大写(例如,US、KR、JP)
  • 有关复数形式,请参阅:Language Plurals

翻译准确性指标

由于不同翻译平台之间单词计数计算不一致,我们通过字符串数量而不是单词计数来衡量准确性。

我们使用以下指标评估翻译准确性

  • 源字符串:需要翻译的原始英文消息的总数。
  • 翻译字符串:已成功翻译成目标语言的消息数量。


我们根据所有版本中准确字符串的比例计算准确性,同时考虑源字符串和翻译字符串。

检查内容

  • 总字符串计数(源和翻译)
  • 翻译完成率
  • Zanata 和 Weblate 之间所有翻译文件的文件级比较,以验证数据完整性

翻译迁移状态

有关准确性的更多详细信息,请参阅 Launchpad 错误。

项目 进度状态 准确性 Launchpad 错误 贡献者 备注
cloudkitty-dashboard 正在处理 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2121053 DaGyeong Kim 不适用
designate-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119196 不适用 不适用
freezer-web-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2124944 不适用 不适用
heat-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119199 不适用 不适用
ironic-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119203 不适用 不适用
manila-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119204 不适用 不适用
magnum-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119200 不适用 不适用
networking-bgpvpn 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119207 不适用 不适用
neutron-fwaas-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119206 不适用 不适用
neutron-vpnaas-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119388 不适用 不适用
octavia-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119197 不适用 不适用
trove-dashboard 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119201 不适用 不适用
zaqar-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119468 不适用 不适用
zun-ui 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2119205 不适用 不适用
horizon 未开始 不适用 https://bugs.launchpad.net/openstack-i18n/+bug/2125039 不适用 不适用

Etherpads