【发布时间】: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