Ich implementiere i18n zu meinem Projekt in C++ mit GNU xgettext, Xcode.Wie ruft man GNU gettext() mit Argumenten auf?
Die Situation ist wie folgt
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…));
}
Da jede Datei nicht explizit haben gett ext() - Funktionsaufruf, ich konnte für diese Situation xgettext für einzelne Dateien (wie: xgettext -d FileOne -o FileOne.pot FileOne.cpp
) nicht aufrufen.
Wie soll ich Xgettext für ein ganzes Projekt aufrufen (wahrscheinlich von Xcode)?
Dank
Haben Sie 'xgettext's Handbuchseite gelesen, und wenn nicht warum nicht? 'xgettext's Handbuchseite erklärt, welche Option an' xgettext' übergeben wird, damit es erkennt, dass zum Beispiel der erste Parameter zu 'gettext_args()' eine Zeichenfolge ist, die internationalisiert werden soll? –
Ja, tat ich. Das Problem hier ist, wenn ich xgettext ausführen, um Zeichenfolgen aus der Befehlszeile zu extrahieren, erwartet es, dass alle .cpp-Dateien einen gettext() - Funktionsaufruf haben sollten. Da es keinen direkten get text() - Aufruf von FileOne.cpp und FileTwo.cpp gibt, wird keine .pot-Datei für sie erstellt. Ich schätze, ich kann nicht verwenden, wie es in diesem Handbuch erklärt wurde. – BusyBee
'xgettext's Handbuchseite erklärt, welche Option an' xgettext' übergeben wird, damit es erkennen kann, dass '' gettext_args() ''s erstes Argument eine Zeichenkette ist. Ich kann Ihnen versichern, dass ich nach dem Lesen der Handbuchseite keine Probleme habe, 'xgettext' in einer Datei auszuführen, die keine Aufrufe von gettext() hat, und doch findet' xgettext' irgendwie die richtigen Zeichenfolgen. –