2016-08-03 28 views
0

我正在使用GNU xgettext,Xcode在C++中實現i18n。如何用參數調用GNU gettext()?

的情況如下

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…)); 
} 

由於每個文件沒有明確的GETT ext()函數調用時,我無法針對這種情況爲單個文件調用xgettext(如:xgettext -d FileOne -o FileOne.pot FileOne.cpp)。

我應該如何爲整個項目調用xgettext(可能來自Xcode)?

感謝

+0

您是否閱讀過'xgettext'手冊頁,如果不是,爲什麼不呢? 'xgettext'手冊頁解釋了傳遞給'xgettext'的選項,以便它能夠識別,例如,gettext_args()的第一個參數是一個應該國際化的字符串? –

+0

是的,我做到了。這裏的問題是如果我運行xgettext從命令行中提取字符串,它期望所有的.cpp文件應該有一個gettext()函數調用。因爲沒有直接從FileOne.cpp和FileTwo.cpp調用text(),所以它不會爲它們創建.pot文件。我想我不能像在手冊中解釋的那樣使用它。 – BusyBee

+0

'xgettext'手冊頁說明了傳遞給'xgettext'的選項,例如,'gettext_args()'的第一個參數是一個字符串。我可以向你保證,在閱讀手冊頁後,我沒有任何問題在沒有任何調用gettext()的文件上運行'xgettext',但是,不知何故'xgettext'找到了所有正確的字符串。 –

回答