qt_add_lrelease
Ajoute des cibles permettant de transformer les fichiers .ts d'Qt Linguist en fichiers .qm.
La commande est définie dans le composant « LinguistTools » du paquet « Qt6 ». Chargez le paquet à l'aide de la commande suivante :
find_package(Qt6 REQUIRED COMPONENTS LinguistTools)Cette commande a été introduite dans Qt 6.2.
Syntaxe
Depuis la version 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 ...])Depuis la version 6.2 (obsolète) :
qt_add_lrelease(target TS_FILES file1.ts [file2.ts ...]
[NO_TARGET_DEPENDENCY]
[NO_GLOBAL_TARGET]
[QM_FILES_OUTPUT_VARIABLE variable-name]
[OPTIONS ...])Si les commandes sans version sont désactivées, utilisez plutôt ` qt6_add_lrelease() `. Elle prend en charge le même ensemble d'arguments que cette commande.
Avertissement : l'appel de ` qt_add_lrelease ` dans une portée de répertoire différente de celle du répertoire cible nécessite au moins la version 3.18 de CMake.
Description
Crée une commande personnalisée pour transformer les fichiers .ts en fichiers .qm à l'aide de lrelease.
L’exécution de la commande personnalisée est pilotée par une cible personnalisée qui est générée par défaut. Le nom de cette cible personnalisée est par défaut « ${PROJECT_NAME}_lrelease ». Les appels suivants à « qt_add_lrelease » créeront des noms de cibles auxquels sera ajouté un numéro croissant. Le nom de la cible personnalisée peut être spécifié à l’aide de l’option « LRELEASE_TARGET ».
Les fichiers .ts doivent être spécifiés à l’aide de l’argument TS_FILES.
Cette fonction est conçue pour être utilisée conjointement avec ` qt_add_lupdate()`. Voir également la fonction de commodité `qt_add_translations()`.
Options
OPTIONS Vous pouvez définir des paramètres supplémentaires à transmettre lors de l’appel de ` lrelease `. Vous trouverez la liste des options possibles dans la documentation de `lrelease`.
Emplacement des fichiers .qm générés
Par défaut, les fichiers d’ .qm s sont placés dans le répertoire de compilation actuel (CMAKE_CURRENT_BINARY_DIR). Depuis Qt 6.9, vous pouvez utiliser l’argument QM_OUTPUT_DIRECTORY pour générer les fichiers .qm dans un autre répertoire. Les chemins relatifs sont considérés comme se trouvant sous CMAKE_CURRENT_BINARY_DIR.
Par exemple, avec le code suivant, les fichiers .qm sont générés dans un répertoire translations situé sous le répertoire de compilation actuel.
qt_add_lrelease(
TS_FILES myapp_en.ts myapp_de.ts
QM_OUTPUT_DIRECTORY translations
)Pour un contrôle plus précis, vous pouvez spécifier le répertoire de sortie de chaque fichier « .qm » en définissant la propriété du fichier source « OUTPUT_LOCATION » dans le fichier « .ts » correspondant. Cette opération doit être effectuée avant d’appeler la méthode « qt_add_lrelease ».
La propriété du fichier source « OUTPUT_LOCATION » remplace le répertoire transmis via « QM_OUTPUT_DIRECTORY ».
Par exemple, avec le code suivant, les fichiers .qm sont générés dans un répertoire translations situé sous le répertoire de compilation actuel.
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)Traitement des fichiers .qm générés
Pour traiter ultérieurement les fichiers .qm générés, par exemple afin de créer des règles d’installation, la fonction qt_add_lrelease peut stocker les chemins d’accès des fichiers .qm dans une variable. Pour ce faire, transmettez l’argument QM_FILES_OUTPUT_VARIABLE <variable-name> à la fonction.
Compilation par défaut
Par défaut, la commande crée une cible personnalisée qui est ajoutée à la cible de compilation par défaut. Cela garantit que les fichiers .qm sont toujours à jour lors de la compilation du projet. Ce comportement peut être désactivé à l’aide de l’argument EXCLUDE_FROM_ALL. Dans ce cas, l’utilisateur doit compiler la cible ${PROJECT_NAME}_lrelease manuellement.
Cible « umbrella »
En plus de la cible ${target}_lrelease, une cible « parapluie » release_translations est créée. Cette cible compilera toutes les cibles ${target}_lrelease créées avec qt_add_lrelease.
Transmettez NO_GLOBAL_TARGET à qt_add_lrelease pour empêcher ce comportement.
Le nom de cette cible peut être redéfini en définissant la variable QT_GLOBAL_LRELEASE_TARGET avant d’appeler qt_add_lrelease.
Fusion des traductions fournies par Qt
Depuis Qt 6.9, vous pouvez fusionner les traductions fournies par Qt dans des fichiers ` .qm ` spécifiques à l’application. Pour ce faire, passez l’option ` MERGE_QT_TRANSLATIONS ` à ` qt_add_translations`. Cela permettra d’identifier les catalogues de traduction Qt correspondant aux modules utilisés par votre projet et de les fusionner dans les fichiers ` .qm ` générés par ` lrelease`.
Les catalogues de traduction Qt sont déterminés par les appels à ` find_package ` dans le cadre de votre ` CMakeLists.txt ` où ` qt_add_translations ` est appelé. Par exemple, la séquence suivante fusionnera les catalogues ` qtbase ` et ` qtmultimedia ` dans vos fichiers ` .qm ` :
find_package(Qt6 COMPONENTS MultimediaWidgets)
...
qt_add_lrelease(
TS_FILES myapp_de.ts myapp_fi.ts
MERGE_QT_TRANSLATIONS
)Pour spécifier explicitement les catalogues, utilisez l’argument QT_TRANSLATION_CATALOGS:
qt_add_lrelease(
TS_FILES myapp_de.ts myapp_fi.ts
MERGE_QT_TRANSLATIONS
QT_TRANSLATION_CATALOGS qtbase qtmultimedia
)Si votre projet prend en charge une langue pour laquelle Qt ne propose pas de traduction, un avertissement sera émis lors de la configuration. Vous pouvez supprimer cet avertissement en définissant la variable CMake QT_NO_MISSING_CATALOG_LANGUAGE_WARNING sur ON.
Signature de commande obsolète
Les anciennes versions de ` qt_add_lrelease ` prenaient une cible comme premier argument. Cela reste possible, mais est désormais obsolète.
Exemples
Ajoutez les cibles myapp_lrelease et release_translations pour transformer les fichiers .ts donnés en fichiers .qm. Installez également les fichiers .qm générés. La cible myapp_lrelease est construite par défaut.
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")Vous pouvez spécifier le nom de la cible créée en passant l’argument LRELEASE_TARGET:
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.