我正在将I18N支持添加到一些Python代码中,这些代码使用了应用程序其余部分基于GLib的接口。为了与应用程序的其他部分保持一致,我想使用GLib的gettext实现/包装器。
我使用以下方法导入GLib API:
import gi
from gi.repository import GLib但是,如果我在库中看到一些*gettext()函数(dcgettext、dgettext、dngettext、dpgettext、dpgettext2),我就找不到相当于textdomain()和bindtextdomain()的函数。
我是不是遗漏了什么?
发布于 2022-08-03 10:43:01
GLib没有自己的gettext实现。不过,它确实使用它进行翻译,而C端的-especially为它提供了有用的包装器。
在Python上使用GTK时,这意味着通常要调用bindtextdomain():使用Python提供的locale模块。如果Python是在没有gettext支持的情况下构建的,那么您必须导入gettext模块
import gettext
import locale
try:
locale.bindtextdomain(app_id, locale_dir)
locale.textdomain(app_id)
except AttributeError as e:
# Python built without gettext support does not have
# bindtextdomain() and textdomain().
gettext.bindtextdomain(app_id, locale_dir)
gettext.textdomain(app_id)https://stackoverflow.com/questions/73203732
复制相似问题