【问题标题】:Glib equivalent of `textdomain()` and `bindtextdomain()`Glib 等效于 `textdomain()` 和 `bindtextdomain()`
【发布时间】:2022-08-03 18:43:01
【问题描述】:

我正在将 I18N 支持添加到一些使用基于 GLib 的接口的 Python 代码到应用程序的其余部分。为了与应用程序的其余部分保持一致,我想使用 GLib\'s gettext implementation/wrapper。

我使用以下命令导入 GLib API:

import gi
from gi.repository import GLib

但是,如果我在库中看到一些 *gettext() 函数(dcgettextdgettextdngettextdpgettextdpgettext2)我找不到与 textdomain()bindtextdomain() 等效的函数。

我错过了什么吗?

    标签: python internationalization gettext glib


    【解决方案1】:

    GLib 没有自己的 gettext 实现。虽然它肯定会使用它进行翻译,并且 - 特别是在 C 端 - 为它提供了有用的包装器。

    在 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2021-04-04
      相关资源
      最近更新 更多