询问gettext有关Python中当前语言和翻译源的信息



我在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 来执行此操作可能会更好。祝你好运!

最新更新