Gibt es eine Cmake-Funktion, um .pot-Dateien zu aktualisieren?

8

Ich migriere ein Projekt von autotools nach cmake. Ich habe eine Frage zur Gettext-Unterstützung.

Es gibt ein existierendes FindGettext.cmake Module, das eine nette Funktion bietet:

%Vor%

wo Sie eine Pot-Datei bereitstellen und po fil übersetzen; Die Funktion kümmert sich darum, die po-Dateien in gmo-Dateien umzuwandeln und fügt die richtigen Installationsziele hinzu, um sicherzustellen, dass die Dateien zur Laufzeit gefunden werden können. Alles gut und gut.

Nun kommt die Frage: Wie aktualisierst du deine Pot-Dateien und po-Dateien, wenn du neue Nachrichten hinzufügst?

Dafür würden Autotools ein "update-po" -Ziel erzeugen, das (von dem, was ich verstehe), eine POTFILES.in mit den Listen aller Dateien liest, die übersetzte Zeichenfolgen enthalten, diese mit anderen Informationen mischen und am Ende anrufen xgetext um das po zu generieren. Ich denke, die entsprechende Makefile Aufgabe ist die, die etwas wie enthält:

%Vor%

Also, bevor ich das Rad neu erfinde, gibt es eine existierende CMake-Funktion, um das Gleiche zu tun? Oder muss ich die ausführbare Datei xgettext finden, listet die Dateien auf und mache das manuell? Die Makefile-Version scheint ziemlich kompliziert zu sein (obwohl sie viele Fälle zu behandeln scheint); Es würde mir nichts ausmachen, nicht das cmake-Äquivalent zu schreiben;)

Danke

PH

    
phtrivier 22.04.2010, 21:43
quelle

2 Antworten

6

Lassen Sie sich nicht vom Autotool-Bloat erschrecken. : -)

Sie können den folgenden Code verwenden:

%Vor%

Für C-Programme verwende ich folgendes als _xgettext_option_list

%Vor%

Ich habe das Rad neu erfunden, als der FindGettext nicht die Option ALL hatte (wenn es cmake-2.4 war): -)

    
Ding-Yi Chen 23.07.2012, 05:27
quelle
2
___ tag123cmake ___ CMake ist ein plattformübergreifender Open-Source-Build-System-Generator. Es generiert Dateien für Build-Systeme wie native Makefiles, Ninja-Build und Projektdateien für mehrere integrierte Entwicklungsumgebungen. ___ answer11606896 ___

Lassen Sie sich nicht vom Autotool-Bloat erschrecken. : -)

Sie können den folgenden Code verwenden:

%Vor%

Für C-Programme verwende ich folgendes als %code%

%Vor%

Ich habe das Rad neu erfunden, als der FindGettext nicht die Option %code% hatte (wenn es cmake-2.4 war): -)

    
___ qstntxt ___

Ich migriere ein Projekt von autotools nach cmake. Ich habe eine Frage zur Gettext-Unterstützung.

Es gibt ein existierendes FindGettext.cmake Module, das eine nette Funktion bietet:

%Vor%

wo Sie eine Pot-Datei bereitstellen und po fil übersetzen; Die Funktion kümmert sich darum, die po-Dateien in gmo-Dateien umzuwandeln und fügt die richtigen Installationsziele hinzu, um sicherzustellen, dass die Dateien zur Laufzeit gefunden werden können. Alles gut und gut.

Nun kommt die Frage: Wie aktualisierst du deine Pot-Dateien und po-Dateien, wenn du neue Nachrichten hinzufügst?

Dafür würden Autotools ein "update-po" -Ziel erzeugen, das (von dem, was ich verstehe), eine POTFILES.in mit den Listen aller Dateien liest, die übersetzte Zeichenfolgen enthalten, diese mit anderen Informationen mischen und am Ende anrufen xgetext um das po zu generieren. Ich denke, die entsprechende Makefile Aufgabe ist die, die etwas wie enthält:

%Vor%

Also, bevor ich das Rad neu erfinde, gibt es eine existierende CMake-Funktion, um das Gleiche zu tun? Oder muss ich die ausführbare Datei xgettext finden, listet die Dateien auf und mache das manuell? Die Makefile-Version scheint ziemlich kompliziert zu sein (obwohl sie viele Fälle zu behandeln scheint); Es würde mir nichts ausmachen, nicht das cmake-Äquivalent zu schreiben;)

Danke

PH

    
___ qstnhdr ___ Gibt es eine Cmake-Funktion, um .pot-Dateien zu aktualisieren? ___ antwort43767369 ___

Laut dieser Wiki-Seite ist die Verwendung von cmake zur Bearbeitung von Quellen keine gute Idee . Verwenden Sie lieber eigenständiges Skript zum Aktualisieren von Übersetzungen.

  

Tatsächlich ist das Extrahieren und Zusammenführen von Nachrichten nicht gut auf das CMake-Konzept von Out-of-Source-Builds abgebildet, und CMake kann dies nicht   bieten auch zu viel Hilfe für diesen Schritt.

     

Daher werden wir in diesem Tutorial den ersten Schritt mit a behandeln   Standalone-Shell-Skript, und nur der zweite Schritt wird von behandelt   CMake.

    
___
Ashark 03.05.2017 18:19
quelle

Tags und Links