代码之家  ›  专栏  ›  技术社区  ›  Sergey Stolyarov

gettext:将dgettext()字符串提取到domain.po文件

  •  9
  • Sergey Stolyarov  · 技术社区  · 15 年前

    如何将gettext字符串提取到多个.po文件?例如,调用 dgettext('one', 'Hello') 应该转到one.po,然后 dgettext('two', 'Bye') 两个阿宝。xgettext只是忽略文本域,将所有内容放在一个文件中。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Johan Dahlin Idelic    12 年前

    首先,您需要一种分离域的方法。

    例如,假设您有一个域 图书馆 应用程序 ,然后为 dgettext() 呼叫;

    _app(msg) -> dgettext("app", msg);
    

    一个用于lib域:

    _lib(msg) -> dgettext("lib", msg);
    

    在代码中添加这些调用,如下所示;

    show_message(_app("Choose a directory to save your work."));
    show_message(_lib("No space left on device."));
    

    记住你需要打电话 bindtextdomain() 在初始化应用程序时同时用于这两个域。

    xgettext 在源树中包含这些标记的所有文件名上:

    xgettext --keyword=_app -d domain1 filenames...
    xgettext --keyword=_lib -d domain2 filenames...
    

    最后,将两个.po文件编译成二进制.mo变量,并将它们复制/安装到正确的位置。

        2
  •  0
  •   PersianGulf    12 年前