Auf dieser Seite

qt_add_lrelease

Fügen Sie Ziele hinzu, um „ Qt Linguist “-Dateien im Format .ts in .qm-Dateien umzuwandeln.

Der Befehl ist in der Komponente „ LinguistTools “ des Pakets „ Qt6 “ definiert. Laden Sie das Paket mit folgendem Befehl:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

Dieser Befehl wurde in Qt 6.2 eingeführt.

Übersicht

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 versionlose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_lrelease() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.

Warnung: Der Aufruf von „ qt_add_lrelease “ in einem anderen Verzeichnisbereich als dem des Zielverzeichnisses erfordert mindestens CMake-Version 3.18.

Beschreibung

Erstellt einen benutzerdefinierten Befehl, um „ .ts “-Dateien mit „lrelease“ in „ .qm “-Dateien umzuwandeln.

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 “. Bei weiteren Aufrufen von „ qt_add_lrelease “ werden Zielnamen mit einer ansteigenden Nummer als Suffix erstellt. Der Name des benutzerdefinierten Ziels kann mit der Option „ LRELEASE_TARGET “ festgelegt werden.

Die „ .ts “-Dateien müssen mit dem Argument „ TS_FILES “ angegeben werden.

Diese Funktion ist für die Verwendung in Verbindung mit ` qt_add_lupdate()` vorgesehen. Siehe auch die Komfortfunktion ` qt_add_translations()`.

Optionen

Sie können zusätzliche „ OPTIONS “ festlegen, die beim Aufruf von „ lrelease “ übergeben werden sollen. Mögliche Optionen finden Sie in der lrelease-Dokumentation.

Speicherort der generierten .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 generieren. Relative Pfade werden als unterhalb von CMAKE_CURRENT_BINARY_DIR liegend betrachtet.

Mit dem folgenden Code werden beispielsweise die „ .qm “-Dateien im Verzeichnis „ translations “ unterhalb des aktuellen Build-Verzeichnisses generiert.

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 festlegen, indem Sie die Quelldateieigenschaft „ OUTPUT_LOCATION “ in der entsprechenden „ .ts “-Datei setzen. Dies muss vor dem Aufruf von „ qt_add_lrelease “ erfolgen.

Die Eigenschaft „ OUTPUT_LOCATION “ der Quelldatei überschreibt das über „ QM_OUTPUT_DIRECTORY “ übergebene Verzeichnis.

Mit dem folgenden Code werden die „ .qm “-Dateien beispielsweise in einem Verzeichnis „ translations “ unterhalb des aktuellen Build-Verzeichnisses generiert.

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 generierten .qm-Dateien

Um die generierten „ .qm “-Dateien weiterzuverarbeiten, beispielsweise zum Erstellen von Installationsregeln, 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 dem Standard-Build-Ziel hinzugefügt wird. Dadurch wird sichergestellt, dass die „ .qm “-Dateien beim Erstellen des Projekts stets auf dem neuesten Stand sind. Dieses Verhalten kann mit dem Argument „ EXCLUDE_FROM_ALL “ deaktiviert werden. In diesem Fall muss der Benutzer das Ziel „ ${PROJECT_NAME}_lrelease “ manuell erstellen.

Übergeordnetes 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 die Variable „ QT_GLOBAL_LRELEASE_TARGET “ vor dem Aufruf von „ qt_add_lrelease “ gesetzt wird.

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 „ .qm “-Dateien zusammengeführt, die von „ lrelease “ erzeugt werden.

Die Qt-Übersetzungskataloge werden durch die Aufrufe von ` find_package ` im Geltungsbereich Ihres ` CMakeLists.txt ` ermittelt, in dem ` qt_add_translations ` aufgerufen wird. Die folgende Abfolge führt beispielsweise dazu, dass die Kataloge ` qtbase ` und ` qtmultimedia ` in Ihre ` .qm `-Dateien zusammengeführt werden:

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 beim Konfigurieren 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 Befehlssyntax

Ältere Versionen von ` qt_add_lrelease ` nahmen ein Ziel als erstes Argument entgegen. Dies ist weiterhin möglich, gilt jedoch als veraltet.

Beispiele

Fügen Sie die Ziele „ myapp_lrelease “ und „ release_translations “ hinzu, um die angegebenen „ .ts “-Dateien in „ .qm “-Dateien umzuwandeln. Installieren Sie außerdem die generierten „ .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 festlegen, 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
)

© 2026 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.