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