【问题标题】:How to invoke GNU gettext() with arguments?如何使用参数调用 GNU gettext()?
【发布时间】:2016-08-03 12:09:37
【问题描述】:

我正在使用 GNU xgettext、Xcode 在我的 C++ 项目中实现 i18n。

情况如下

FileOne.cpp

 void somefunction()
 { 
     string file = “fileName";
     loggerClass.addlog(gettext_args(“some %s missing “, file));
 }

FileTwo.cpp

 void someOtherfunction()
 { 
     string doc = “docName";
     loggerClass.addlog(gettext_args(“some %s missing “, doc));
 }

FileThree.cpp

std::string gettext_args(const std::string& format, Args ...args)
{        
    return string_format(gettext(format.c_str(), args…));
}

由于每个文件都没有显式的 gettext() 函数调用,因此在这种情况下,我无法为单个文件调用 xgettext(例如:xgettext -d FileOne -o FileOne.pot FileOne.cpp)。

我应该如何为整个项目(可能来自 Xcode)调用 xgettext?

谢谢

【问题讨论】:

  • 您是否阅读过xgettext 的手册页,如果没有阅读,为什么不阅读? xgettext 的手册页解释了将哪个选项传递给 xgettext,以便它识别,例如,gettext_args() 的第一个参数是一个应该国际化的字符串?
  • 是的,我做到了。这里的问题是,如果我运行 xgettext 从命令行提取字符串,它期望所有 .cpp 文件都应该有一个 gettext() 函数调用。由于没有来自 FileOne.cpp 和 FileTwo.cpp 的直接 get text() 调用,因此它不会为它们创建 .pot 文件。我想我不能按照该手册中的说明使用。
  • xgettext 的手册页解释了将哪个选项传递给xgettext,因此它会识别出,例如,gettext_args() 的第一个参数是一个字符串。我可以向您保证,在阅读手册页后,我在没有任何 gettext() 调用的文件上运行 xgettext 没有问题,但不知何故,xgettext 找到了所有正确的字符串。跨度>
  • 你的意思是仍然可以从命令行调用 xgettext 像(xgettext -d FileOne -o FileOne.pot FileOne.cpp) this?
  • 是的。手动或从脚本如何调用 xgettext 并不重要。它的工作方式相同。

标签: c++ ios xcode internationalization


【解决方案1】:

您应该阅读gettext documentation,其中还包含有关此工具的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多