我在python3中非常简单地初始化gettext
。
>>> import gettext
>>> gettext.install('i18n-test', 'locales')
>>> print(_('Hello World!'))
Hallo Welt!
我可以问gettext它使用哪种当前语言(必须不是系统默认的LANGUAGE
!)以及它从哪里打开.mo
文件?
我在API中看不到这样的内容。
答案 0 :(得分:1)
来自文档;
如果您使用此API,则会在全球范围内影响整个应用程序的翻译。如果您的应用程序是单语言的,并且根据用户的语言环境选择语言,通常这就是您想要的。如果您正在本地化Python模块,或者您的应用程序需要即时切换语言,则可能要改用基于类的API。
因此,使用Class-based API可能会更好。祝你好运!
答案 1 :(得分:1)
您需要find
模块的gettext
功能。更确切地说,它由install
函数内部使用,因此它将返回install
将使用的内容:
gettext.install(domain, localedir=None, codeset=None, names=None)
这会根据传递到函数_()
的域,localedir和代码集在Python的内置命名空间中安装函数translation()
。
然后
gettext.translation(domain, localedir=None, languages=None, class_=None, fallback=False, codeset=None)
返回基于域,localedir和语言的Translations实例,这些实例首先传递给find()
以获得相关的.mo文件路径的列表...
因此您应该使用:
file = gettext.find('i18n-test', 'locales')
它应返回文件名,例如localedir/language/LC_MESSAGES/domain.mo
,其中language
是gettext选择的语言。