扩展 oslo.i18n 库的 gettext 支持¶
https://blueprints.launchpad.net/oslo.i18n/+spec/more-gettext-support
oslo.i18n 库已经支持标准的 gettext 函数。
但是,翻译需要“上下文标记”和“复数形式”的 gettext 函数。请参阅参考 - Horizon 翻译 Wiki。
问题描述¶
标准的 gettext 函数支持大多数翻译用例。
但有两个情况需要解决:* 同一个英文单词在不同语境下的不同翻译,例如菜单项和标签;* 某些语言(如英语)的复数形式,单数和复数项需要不同的翻译;
提议的变更¶
在 python gettext 模块中,“上下文标记”和“复数形式”都受支持,但没有惰性翻译支持。
计划是在 oslo.i18n 库中添加具有惰性翻译支持的这两个特性。
oslo.i18n 将提供 contextual_form 和 plural_form 作为附加属性,以及这两个属性的缩写形式“_C”和“_P”。
备选方案¶
实际上,我们可以不使用“上下文标记”或“复数形式”进行翻译。
但在某些情况下,“上下文标记”可以减少歧义,“复数形式”可以提高翻译质量。
Impact on Existing APIs¶
将在 TranslatorFactory 上提供新的 contextual_form 和 plural_form 属性,并从库中导出。
此规范目前仅涵盖用户界面字符串,消息日志不受影响。
安全影响¶
无
性能影响¶
要使用新方法,需要将一些 gettext 调用 _(“str”) 替换为 _C(“context”, “str”) 或 _P(“singular”, “plural”, count)。
由于新方法需要额外的参数,只有在可以使用新方法提高翻译质量的情况下,才需要切换到使用新方法。
大多数代码仍然可以使用标准的 gettext 函数。
Configuration Impact¶
需要更改 Jenkins 作业以提取带有上下文形式和复数形式的可翻译消息。
开发人员影响¶
此规范只是向 oslo.i18n 添加更多函数,开发人员只需在改进翻译时切换到新函数即可。
如果没有问题,代码仍然可以使用标准的 gettext 函数。
Testing Impact¶
无
实现¶
负责人¶
- 主要负责人
alexepico
- 其他贡献者
anish-developer
里程碑¶
完成目标里程碑
工作项¶
扩展 Message 类以支持 contextual_form 和 plural_form;
在 TranslatorFactory 上导出 contextual_form 和 plural_form;
记录何时以及如何使用 contextual_form 或 plural_form 属性;
更改 Jenkins 作业以提取带有上下文形式和复数形式的可翻译消息;
孵化¶
N/A
采用¶
N/A
库¶
N/A
预计 API 稳定¶
将在 oslo.i18n 的 TranslatorFactory 上提供新的 contextual_form 和 plural_form 属性。
文档影响¶
使用示例更新 oslo.i18n 的开发者文档。
如果开发者使用,翻译团队需要翻译“上下文标记”和“复数形式”的 gettext 消息。
依赖项¶
参考资料¶
Horizon 翻译 Wiki: https://wiki.openstack.org/wiki/I18n/TranslatableStrings
注意
本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode