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

时间:2019-02-11 10:55:08

标签: python python-3.x gettext

我在python3中非常简单地初始化gettext

>>> import gettext
>>> gettext.install('i18n-test', 'locales')
>>> print(_('Hello World!'))
Hallo Welt!

我可以问gettext它使用哪种当前语言(必须不是系统默认的LANGUAGE!)以及它从哪里打开.mo文件?

我在API中看不到这样的内容。

2 个答案:

答案 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选择的语言。