qt_add_lrelease
Hinzufügen von Zielen zur Umwandlung von Qt Linguist.ts-Dateien in .qm-Dateien.
Der Befehl ist in der Komponente LinguistTools
des Pakets Qt6
definiert. Laden Sie das Paket mit:
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)
Dieser Befehl wurde in Qt 6.2 eingeführt.
Zusammenfassung
Seit 6.7:
qt_add_lrelease(TS_FILES file1.ts [file2.ts ...] [LRELEASE_TARGET target-name] [EXCLUDE_FROM_ALL] [NO_GLOBAL_TARGET] [QM_OUTPUT_DIRECTORY directory] # since 6.9 [QM_FILES_OUTPUT_VARIABLE variable-name] [MERGE_QT_TRANSLATIONS] [QT_TRANSLATION_CATALOGS catalog1 [catalog2 ...]] [OPTIONS ...])
Seit 6.2 (veraltet):
qt_add_lrelease(target TS_FILES file1.ts [file2.ts ...] [NO_TARGET_DEPENDENCY] [NO_GLOBAL_TARGET] [QM_FILES_OUTPUT_VARIABLE variable-name] [OPTIONS ...])
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_lrelease()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Warnung: Der Aufruf von qt_add_lrelease
in einem anderen Verzeichnisbereich als dem Zielverzeichnisbereich erfordert mindestens CMake Version 3.18.
Beschreibung
Erzeugt einen benutzerdefinierten Befehl zur Umwandlung von .ts
Dateien in .qm
Dateien mit lrelease.
Die Ausführung des benutzerdefinierten Befehls wird durch ein benutzerdefiniertes Ziel gesteuert, das standardmäßig erstellt wird. Der Name dieses benutzerdefinierten Ziels lautet standardmäßig ${PROJECT_NAME}_lrelease
. Weitere Aufrufe von qt_add_lrelease
erzeugen Zielnamen mit angehängter steigender Nummer. Der Name des benutzerdefinierten Ziels kann mit der Option LRELEASE_TARGET
angegeben werden.
Die .ts
Dateien müssen mit dem Argument TS_FILES
angegeben werden.
Diese Funktion ist dafür gedacht, in Verbindung mit qt_add_lupdate verwendet zu werden. Siehe auch den Komfort-Wrapper qt_add_translations.
Optionen
Sie können zusätzliche OPTIONS
setzen, die übergeben werden sollen, wenn lrelease
aufgerufen wird. Mögliche Optionen finden Sie in der lrelease-Dokumentation.
Speicherort der erzeugten .qm-Dateien
Standardmäßig werden die .qm
Dateien im aktuellen Build-Verzeichnis (CMAKE_CURRENT_BINARY_DIR
) abgelegt. Seit Qt 6.9 können Sie das Argument QM_OUTPUT_DIRECTORY
verwenden, um die .qm
Dateien in einem anderen Verzeichnis zu erzeugen. Relative Pfade werden als unterhalb von CMAKE_CURRENT_BINARY_DIR
liegend betrachtet.
Zum Beispiel werden mit dem folgenden Code die .qm
Dateien in einem translations
Verzeichnis unterhalb des aktuellen Build-Verzeichnisses erzeugt.
qt_add_lrelease( TS_FILES myapp_en.ts myapp_de.ts QM_OUTPUT_DIRECTORY translations )
Für eine feinere Steuerung können Sie das Ausgabeverzeichnis einzelner .qm
Dateien angeben, indem Sie die Quelldateieigenschaft OUTPUT_LOCATION
auf die entsprechende .ts
Datei setzen. Dies muss vor dem Aufruf von qt_add_lrelease
geschehen.
Die Quelldateieigenschaft OUTPUT_LOCATION
hat Vorrang vor dem Verzeichnis, das über QM_OUTPUT_DIRECTORY
übergeben wird.
Mit dem folgenden Code werden zum Beispiel die .qm
Dateien in einem translations
Verzeichnis unterhalb des aktuellen Build-Verzeichnisses erzeugt.
set_source_files_properties(app_en.ts app_de.ts PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations") qt_add_lrelease(TS_FILES myapp_en.ts myapp_de.ts)
Verarbeitung der erzeugten .qm Dateien
Um die generierten .qm
Dateien weiter zu verarbeiten, zum Beispiel um Installationsregeln zu erstellen, kann qt_add_lrelease
die Pfade der .qm
Dateien in einer Variablen speichern. Übergeben Sie dazu QM_FILES_OUTPUT_VARIABLE <variable-name>
an die Funktion.
Standardmäßig erstellen
Standardmäßig erstellt der Befehl ein benutzerdefiniertes Ziel, das zum Standard-Build-Ziel hinzugefügt wird. Dadurch wird sichergestellt, dass die .qm
Dateien immer aktuell sind, wenn das Projekt gebaut wird. Dieses Verhalten kann mit dem Argument EXCLUDE_FROM_ALL
ausgeschaltet werden. In diesem Fall muss der Benutzer das Ziel ${PROJECT_NAME}_lrelease
manuell erstellen.
Umbrella-Ziel
Zusätzlich zum Ziel ${target}_lrelease
wird ein übergeordnetes Ziel release_translations
erstellt. Dieses Ziel erstellt alle ${target}_lrelease
Ziele, die mit qt_add_lrelease
erstellt wurden.
Übergeben Sie NO_GLOBAL_TARGET
an qt_add_lrelease
, um dieses Verhalten zu verhindern.
Der Name dieses Ziels kann überschrieben werden, indem man die Variable QT_GLOBAL_LRELEASE_TARGET
vor dem Aufruf von qt_add_lrelease
setzt.
Zusammenführen von Qt-bereitgestellten Übersetzungen
Seit Qt 6.9 können Sie die von Qt bereitgestellten Übersetzungen in anwendungsspezifische .qm
Dateien zusammenführen. Übergeben Sie dazu die Option MERGE_QT_TRANSLATIONS
an qt_add_translations
. Dadurch werden die Qt-Übersetzungskataloge ermittelt, die zu den von Ihrem Projekt verwendeten Modulen gehören, und in die von lrelease
erzeugten Dateien .qm
zusammengeführt.
Die Qt-Übersetzungskataloge werden durch die find_package
-Aufrufe in dem Bereich Ihres CMakeLists.txt
bestimmt, in dem qt_add_translations
aufgerufen wird. Zum Beispiel wird die folgende Sequenz die Kataloge qtbase
und qtmultimedia
in Ihre .qm
Dateien einbinden:
find_package(Qt6 COMPONENTS MultimediaWidgets) ... qt_add_lrelease( TS_FILES myapp_de.ts myapp_fi.ts MERGE_QT_TRANSLATIONS )
Um die Kataloge explizit anzugeben, verwenden Sie das Argument QT_TRANSLATION_CATALOGS
:
qt_add_lrelease( TS_FILES myapp_de.ts myapp_fi.ts MERGE_QT_TRANSLATIONS QT_TRANSLATION_CATALOGS qtbase qtmultimedia )
Wenn Ihr Projekt eine Sprache unterstützt, für die Qt keine eigene Übersetzung anbietet, wird zur Konfigurationszeit eine Warnung ausgegeben. Sie können diese Warnung unterdrücken, indem Sie die CMake-Variable QT_NO_MISSING_CATALOG_LANGUAGE_WARNING
auf ON
setzen.
Veraltete Befehlssignatur
Ältere Versionen von qt_add_lrelease
nahmen ein Ziel als erstes Argument. Dies ist immer noch möglich, aber veraltet.
Beispiele
Fügen Sie die Targets myapp_lrelease
und release_translations
hinzu, um die angegebenen .ts
Dateien in .qm
Dateien zu transformieren. Installieren Sie auch die erzeugten .qm
Dateien. Das Ziel myapp_lrelease
wird standardmäßig erstellt.
project(myapp) ... qt_add_lrelease( TS_FILES myapp_de.ts myapp_fr.ts QM_FILES_OUTPUT_VARIABLE qm_files ) install(FILES ${qm_files} DESTINATION "translations")
Sie können den Namen des erstellten Ziels angeben, indem Sie das Argument LRELEASE_TARGET
übergeben:
qt_add_lrelease( LRELEASE_TARGET create_myapp_qm_files TS_FILES myapp_de.ts myapp_fr.ts QM_FILES_OUTPUT_VARIABLE qm_files )
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.