我有这段代码用于翻译:
translations = gettext.translation(
locale_language,
localedir="gui/locale",
languages=[locale_language]
)
translations.install()
其中
locale_language
可以是 "en"
(源语言 (msgid
s))或 "es"
(翻译语言 (msgstr
s))
我需要有
en.mo
和 es.mo
才能正确切换语言,但由于源语言是英语,所以 en.mo
未填写。当语言更改时,我必须这样做才能运行以前的代码。
我想知道是否有更好的方法来做到这一点,即没有空的
en.mo
(上面的代码也需要一个if
检查是否locale_language == "en"
,但这不是问题)。
关于
msgid
是否应该是实际的英语字符串,或者更确切地说是一个需要翻译成英语的“键”,就像任何其他语言一样:有一个永无休止的讨论:例如查看这个问题。当然,如果您使用密钥字符串,en.mo
文件需要像其他文件一样完整。
但是,如果您想使用实际的英语字符串作为
msgid
那么您可以简单地避免安装英语翻译,并且可能定义一个虚拟 _()
函数,例如
def _(msg):
return msg
这样您就根本不需要
en.mo
。