模拟定制区域设置消息的方法?

时间:2009-06-23 16:07:25

标签: python language-agnostic localization internationalization customization

程序的自定义有很多层次。

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

在Java中,这些本地化字符串由ResourceBundles处理。 ResourceBundles有一个变体的概念。例如,您可以拥有一个名为messages_en.propertie的基础英语资源。然后,您可以使用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)

答案 1 :(得分:1)

我认为Qt强大的i18n设施(见here)可能会满足您的需求 - 当然,它们也可以在Python中使用,这要归功于通常的,有福的PyQt! - )< / p>