【问题标题】:Methods for modular customization of locale messages?模块化定制语言环境消息的方法?
【发布时间】:2025-12-26 07:50:05
【问题描述】:

程序的定制有很多层次。

首先当然是通过创建 i18n 消息使其说你的语言,其中 gettext 和 xgettext 等工具做得很好。

当您需要修改某些消息的含义以适应您的项目目的时,另一个会出现。

问题是:除了样板翻译之外,是否可以将自定义消息保存在单独的文件中,并让标准工具了解自定义消息优先?

这将有助于防止这些消息被提交到公共存储库并在升级时被样板文本覆盖。

编辑:因为没有太多人关心本地化,我认为收集任何平台的答案都是合适的,但是我目前有兴趣实现这个 python/django。

【问题讨论】:

    标签: python language-agnostic localization internationalization customization


    【解决方案1】:

    在 Java 中,这些本地化字符串由 ResourceBundles 处理。 ResourceBundles 有变体的概念。例如,您可以有一个名为messages_en.properties 的基本英语资源。然后,您可以使用 message_en_US.propertiesmessage_en_UK.properties 自定义特定的英语变体。

    美国和英国是 ISO 国家/地区代码,但您也可以设置自己的自定义变体,其中只包含您想要自定义的字符串。例如:

    #messages_en.properties
    button.click=Click
    label.go=Go
    
    #messages_en_ZZ.properties
    button.click=Click Me
    

    通过将语言环境设置为en_ZZ,您的应用程序将首先查看messages_en_ZZ.properties 以查看自定义字符串是否存在,然后返回到messages_en.properties 进行样板翻译。 [更多关于 ResourceBundle 加载优先级的信息][1]

    [1]:http://java.sun.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle(java.lang.String,java.util.Locale,java.lang.ClassLoader)

    【讨论】:

      【解决方案2】:

      我认为 Qt 强大的 i18n 工具(请参阅 here)可能会满足您的需求 - 当然,它们也可以在 Python 中使用,这要感谢通常的祝福 PyQt!-)

      【讨论】: