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.