问gettext的关于当前语言和翻译源在Python

问题描述 投票:1回答:2

我初始化gettext很简单的像这样的python3。

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

我能问的gettext它使用当前的语言(不能是系统默认LANGUAGE!),并在那里从打开.mo文件?

我看不出在API中是这样的。

python python-3.x gettext
2个回答
1
投票

find模块的gettext功能是你所需要的。更确切地说,它是内部使用install功能,所以它会返回install会用什么:

qazxsw POI 这将安装在Python内建的命名空间功能qazxsw POI,基于域,LOCALEDIR和代码集被传递给函数gettext.install(domain, localedir=None, codeset=None, names=None) ...

然后

_() 返回基于域,LOCALEDIR和语言,这是首先被传递给translation()以获得相关的.mo文件路径列表的翻译实例...

所以,你应该使用:

gettext.translation(domain, localedir=None, languages=None, class_=None, fallback=False, codeset=None)

它应该返回一个文件名一样find(),其中file = gettext.find('i18n-test', 'locales') 是gettext的选择的语言。


1
投票

从文档;

如果使用此API,您将在全球范围影响整个应用程序的翻译。通常,这是你想要什么,如果你的应用是单语,与语言依赖于用户的语言环境的选择。如果你是一个本地化的Python模块,或者如果你的应用需要切换上飞的语言,你可能想使用基于类的API来代替。

所以,你可能会更好使用localedir/language/LC_MESSAGES/domain.mo做到这一点。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.