我用英式英语 en_GB 写作。该脚本适用于我为其提供 .mo 翻译文件的语言。但是,如果我在我的计算机上运行它,则不需要 .mo 文件从 en_GB 转换为 en_GB 并且没有一个文件,因此
gettext.translation
失败。有什么办法可以避免这种情况吗? (同样的情况会发生在为我没有为其创建文件的任何其他语言设置的计算机上。)
import locale
language = locale.getlocale()[0]
lang = gettext.translation("myapp", localedir='blah', languages=[language])
_ = lang.gettext
print(_('message'))
解决方法是拥有一个 en_GB 到 en_GB 文件,但这是一个障碍,需要额外维护。
只需将
fallback
设置为True
.
lang = gettext.translation("myapp", localedir='blah', languages=[language], fallback=True)
这将使
gettext.translation
返回一个NullTranslations
实例,而不是抛出OSError
异常。
NullTranslations
的 gettext
方法只会返回提供的消息。