Localisation des applications
Les étapes de la localisation des applications comprennent la création d'applications traduisibles, leur préparation en vue de la traduction, la traduction des chaînes de caractères et la création de fichiers de traduction à l'exécution pour l'application publiée.
Qt Quick Les applications Qt et C++ utilisent le même système de localisation sous-jacent : lupdate, lrelease, ainsi que les fichiers source de traduction (TS) et les fichiers QM qu'elles génèrent. Vous utilisez les mêmes outils pour le code QML et le code C++, comme décrit dans le manuel «Qt Linguist ».
Vous pouvez même avoir des chaînes d’interface utilisateur dans des fichiers source QML et C++ au sein d’une même application. Le système créera un seul fichier de traduction combiné et les chaînes seront accessibles depuis le code QML et C++.
Pour localiser des applications internationalisées :
- Spécifier les sources de traduction dans les fichiers de projet Qt
- Déployer les traductions
- Utiliser les traductions des modules Qt
Spécifier les sources de traduction dans les fichiers de projet Qt
Pour permettre à lupdate et lrelease de générer des fichiers TS et QM, mettez à jour le fichier de projet de l'application afin de spécifier les fichiers sources contenant le texte à traduire.
Utilisez les codes ISO de langue et de pays dans le nom du fichier TS afin de déterminer la langue à charger lors de l'exécution. Pour plus d'informations, consultez la section « Activer la traduction ».
L'outil lupdate extrait les chaînes de l'interface utilisateur de votre application. Il s'attend à ce que tout le code source soit encodé en UTF-8 par défaut. Pour plus d'informations, consultez la section « Encodage ».
Utilisation de CMake
Rendez les commandes CMake de Qt relatives à l'internationalisation disponibles en chargeant le paquet « Qt6LinguistTools ».
cmake_minimum_required(VERSION 3.16)
project(myproject)
find_package(Qt6 COMPONENTS Core LinguistTools)Déclarez les langues prises en charge à l'aide de l'argument ` I18N_TRANSLATED_LANGUAGES ` de la fonction ` qt_standard_project_setup()`.
# Declare that the project will have a German and a French translation.
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES de fr)Le code source est supposé contenir des chaînes traduisibles en anglais. Vous pouvez adapter la langue des chaînes dans le code source à l’aide du paramètre qt_standard_project_setup I18N_SOURCE_LANGUAGE .
Appelez la commande ` qt_add_translations() ` sur la cible censée charger les fichiers ` .qm ` lors de l'exécution.
qt_add_translations(myapplication)S’ils n’existent pas encore, cela créera les fichiers myproject_de.ts et myproject_fr.ts. Consultez la section Détermination automatique des chemins d’accès aux fichiers .ts pour savoir comment ces noms de fichiers sont construits.
Cette commande crée également le fichier myproject_en.ts, qui est le fichier de traduction dédié aux pluriels. Consultez la section « Gestion des formes plurielles » pour plus de détails. La génération du fichier dédié aux pluriels peut être désactivée à l’aide de l’argument NO_GENERATE_PLURALS_TS_FILE.
Tous les fichiers source de toutes les cibles du projet sont considérés comme des entrées pour la génération des fichiers ` .ts `. Consultez la documentation de référence de `qt_add_translations()` pour plus d'informations sur la manière dont les cibles du projet sont collectées et sur la façon d'exclure des cibles et des sources individuelles.
Utilisation de qmake
Lorsque vous utilisez qmake, définissez une instruction conditionnelle pour masquer la source QML au compilateur que vous indiquez dans l’entrée « SOURCES » ou « HEADERS » du fichier .pro.
La variable SOURCES est destinée aux fichiers source C++. Si vous y répertoriez des fichiers source QML ou JavaScript, le compilateur tentera de les compiler comme s’il s’agissait de fichiers C++. Pour contourner ce problème, vous pouvez utiliser une instruction conditionnelle de type « lupdate_only{...} » afin que l’outil « lupdate » détecte les fichiers .qml, mais que le compilateur C++ les ignore.
Par exemple, l’extrait de fichier .pro suivant spécifie deux fichiers .qml dans l’application.
lupdate_only{
SOURCES = main.qml \
MainPage.qml
}Vous pouvez également spécifier les fichiers source .qml à l’aide d’un caractère générique. La recherche n’étant pas récursive, vous devez spécifier chaque répertoire contenant des fichiers source qui contiennent des chaînes d’interface utilisateur :
lupdate_only{
SOURCES = *.qml \
*.js \
content/*.qml \
content/*.js
}
Déployer les traductions
La manière la plus simple de déployer des fichiers de traduction ( .qm ) consiste à les intégrer dans les ressources Qt. La commande CMake `qt_add_translations()` s'en charge automatiquement. Les fichiers de traduction ( .qm ) sont accessibles sous le préfixe de ressource ` ":/i18n" `.
# Automatically embed generated .qm files.
qt_add_translations(myapplication)Il est également possible de déployer les fichiers ` .qm ` dans un répertoire du système de fichiers. Cette solution est préférable pour les applications de grande taille qui ne souhaitent pas conserver toutes les traductions disponibles en mémoire. Transmettez l’argument QM_FILES_OUTPUT_VARIABLE à la commande qt_add_translations(). Celle-ci stocke la liste des fichiers .qm générés dans la variable spécifiée. Utilisez les commandes d’installation habituelles de CMake sur les noms de fichiers figurant dans cette liste.
# Do not embed generated .qm files.
qt_add_translations(myapplication
QM_FILES_OUTPUT_VARIABLE qm_files
)
# Install generated .qm files.
install(FILES ${qm_files} DESTINATION translations)Placez les fichiers ` .qm ` requis par l’application à un emplacement où le code du chargeur utilisant ` QTranslator ` pourra les trouver. En général, vous spécifiez un chemin relatif à ` QCoreApplication::applicationDirPath()`.
En plus des fichiers QM de l’application, vous devez déployer les fichiers QM des modules Qt que vous utilisez dans l’application, à moins qu’ils ne soient déjà installés sur le système.
Les fichiers QM sont répartis par module et il existe un fichier dit « méta-catalogue » qui regroupe les fichiers QM de tous les modules. Cependant, vous ne devez déployer que les fichiers QM des modules que vous utilisez dans l’application.
Vous pouvez utiliser l’outil « lconvert » lors de l’étape de déploiement pour concaténer les fichiers QM requis en un seul fichier correspondant au fichier de méta-catalogue. Par exemple, pour créer un fichier de traduction en allemand pour une application qui utilise la fonction Qt Core, Qt GUI, et Qt Quick , exécutez :
lconvert -o installation_folder/qt_de.qm qtbase_de.qm qtdeclarative_de.qmUtiliser les traductions des modules Qt
Les modules Qt contiennent plusieurs milliers de chaînes de caractères qui doivent également être traduites dans les langues que vous ciblez. Vous trouverez un certain nombre de fichiers TS dans le dépôt qttranslations. Avant de commencer à traduire Qt, consultez la page wiki « Traduire Qt dans d'autres langues ».
Localisation des traductions Qt
Vous pouvez utiliser la fonction ` QLibraryInfo::path()` pour localiser les traductions des modules Qt utilisés par votre application. Vous pouvez demander le chemin d'accès aux traductions lors de l'exécution en passant ` QLibraryInfo::TranslationsPath ` à cette fonction.
Catalogues disponibles
Les catalogues de traduction Qt se trouvent dans le référentiel qttranslations.
Avertissement : les traductionsQt sont fournies par la communauté Qt et sont proposées sans aucune garantie. Elles peuvent être incomplètes, obsolètes, voire totalement erronées, voire malveillantes. Il est recommandé de vérifier minutieusement toutes les traductions que vous intégrez à vos produits.
Dans Qt 4, il existe un seul fichier .qm volumineux et monolithique par locale. Par exemple, le fichier qt_de.qm contient la traduction allemande de toutes les bibliothèques.
Le méta-catalogue qt_ contient les traductions Qt encore existantes qui étaient incluses dans le catalogue qt_ de Qt 4. Il a été créé pour faciliter le portage des applications de Qt 4 vers Qt 5. Le méta-catalogue dépend de traductions qui peuvent être absentes, car elles appartiennent à des modules superflus ou obsolètes, ce qui peut entraîner l'échec du chargement des traductions. Si vous utilisez dans votre application des modules introduits dans Qt 5 ou une version ultérieure, vous devez spécifier les noms des catalogues correspondant à ces modules, même si vous utilisez le méta-catalogue.
Le tableau suivant répertorie les catalogues de traduction disponibles pour les modules et outils Qt.
| Module ou outil Qt | Catalogue |
|---|---|
| Qt Bluetooth | qtconnectivity |
| Qt Concurrent | qtbase |
| Qt Core | qtbase |
| Qt D-Bus | qtbase |
| Qt Widgets Designer | designer |
| Qt GUI | qtbase |
| Qt Help | qt_help |
| Qt Linguist | linguist |
| Qt Location | qtlocation |
| Qt Multimedia | qtmultimedia |
| Qt Network | qtbase |
| Qt NFC | qtconnectivity |
| Qt Print Support | qtbase |
| Qt Qml | qtdeclarative |
| Qt Quick | qtdeclarative |
| Qt Quick Controls | qtdeclarative |
| Qt Quick Widgets | qtdeclarative |
| Qt Serial Port | qtserialport |
| Qt SQL | qtbase |
| Qt Widgets | qtbase |
| Qt WebSockets | qtwebsockets |
| Qt WebEngine | qtwebengine |
Exemple : modules Qt essentiels
Par exemple, pour localiser les traductions des modules Qt essentiels, tels que Qt Core, Qt GUI, Qt Network et Qt Widgets, ajoutez le code suivant à la fonction main():
QTranslator qtTranslator;
if (qtTranslator.load(QLocale::system(), u"qtbase"_s, u"_"_s,
QLibraryInfo::path(QLibraryInfo::TranslationsPath))) {
app.installTranslator(&qtTranslator);
}© 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.