Localisation des applications
Les étapes de la localisation des applications comprennent la création d'applications traduisibles, leur préparation à la traduction, la traduction des chaînes de caractères et la création de fichiers de traduction d'exécution pour l'application publiée.
Qt Quick Les applications Qt C++ et Qt 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'ils génèrent. Vous utilisez les mêmes outils pour le code QML et le code C++, comme décrit dans le manuelQt Linguist .
Vous pouvez même avoir des chaînes d'interface utilisateur en QML et des fichiers source C++ dans la même application. Le système créera un seul fichier de traduction combiné et les chaînes seront accessibles à partir des codes QML et C++.
Pour localiser des applications internationalisées :
- Spécifier les sources de traduction dans les fichiers du projet Qt
- Déployer les traductions
- Utiliser les traductions des modules Qt
Spécifier les sources de traduction dans les fichiers du 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 de langue et de pays ISO dans le nom du fichier TS pour déterminer la langue à charger au moment de l'exécution. Pour plus d'informations, voir 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, voir Encodage.
Utilisation de CMake
Rendez les commandes CMake de Qt pour l'internationalisation disponibles en chargeant le paquetage Qt6LinguistTools.
cmake_minimum_required(VERSION 3.16)
project(myproject)
find_package(Qt6 COMPONENTS Core LinguistTools)Déclarez les langues supportées avec l'argument I18N_TRANSLATED_LANGUAGES de 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 ajuster la langue des chaînes dans le code source avec le paramètre qt_standard_project_setup I18N_SOURCE_LANGUAGE .
Appelez la commande qt_add_translations sur la cible qui est censée charger les fichiers .qm au moment 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. Voir 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 myproject_en.ts, qui est le fichier de traduction des pluriels uniquement. Voir Gérer les formes plurielles pour plus de détails. La génération du fichier de traduction au pluriel peut être désactivée avec l'argument NO_GENERATE_PLURALS_TS_FILE.
Tous les fichiers sources de toutes les cibles du projet sont considérés comme des entrées pour la génération des fichiers .ts. Voir la documentation de référence de qt_add_translations pour plus d'informations sur la façon dont les cibles du projet sont collectées et sur la façon d'exclure les cibles et les sources uniques.
Utilisation de qmake
Lorsque vous utilisez qmake, définissez une instruction conditionnelle pour masquer au compilateur la source QML que vous avez listée dans l'entrée SOURCES ou HEADERS du fichier .pro.
La variable SOURCES est destinée aux fichiers sources C++. Si vous y indiquez des fichiers source QML ou JavaScript, le compilateur tente de les compiler comme s'il s'agissait de fichiers C++. Pour contourner ce problème, vous pouvez utiliser une instruction conditionnelle lupdate_only{...} afin que l'outil lupdate voie 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 joker. La recherche n'étant pas récursive, vous devez spécifier chaque répertoire contenant des fichiers source contenant des chaînes d'interface utilisateur :
lupdate_only{
SOURCES = *.qml \
*.js \
content/*.qml \
content/*.js
}
Déployer les traductions
La façon la plus simple de déployer les fichiers .qm est de les intégrer dans les ressources Qt. La commande CMake qt_add_translations s'en charge automatiquement. Les fichiers .qm sont accessibles sous le préfixe de ressource ":/i18n".
# Automatically embed generated .qm files.
qt_add_translations(myapplication)Les fichiers .qm peuvent également être déployés dans un répertoire du système de fichiers. Ceci est souhaitable pour les applications plus importantes qui ne veulent pas conserver toutes les traductions disponibles en mémoire. Passez l'argument QM_FILES_OUTPUT_VARIABLE à qt_add_translations. La commande 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 de 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 nécessaires à l'application à un endroit où le code du chargeur utilisant QTranslator peut les trouver. Généralement, vous spécifiez un chemin relatif à QCoreApplication::applicationDirPath().
Outre les 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 installés sur le système.
Les fichiers QM sont divisés par module et il existe un fichier appelé méta-catalogue qui comprend 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 dans l'étape de déploiement pour concaténer les fichiers QM requis dans un fichier qui correspond au fichier de méta-catalogue. Par exemple, pour créer un fichier de traduction en allemand pour une application qui utilise le module Qt Core, Qt GUI, et Qt Quick exécutez :
lconvert -o installation_folder/qt_de.qm qtbase_de.qm qtdeclarative_de.qm
Utiliser 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 visez. Vous pouvez trouver un certain nombre de fichiers TS dans le dépôt qttranslations. Avant de commencer à traduire Qt, lisez la page wiki Traduire Qt dans d'autres langues.
Localisation des traductions de Qt
Vous pouvez utiliser QLibraryInfo::path() pour localiser les traductions des modules Qt que votre application utilise. Vous pouvez demander le chemin d'accès aux traductions au moment de l'exécution en passant QLibraryInfo::TranslationsPath à cette fonction.
Catalogues disponibles
Les catalogues de traduction de Qt sont situés dans le dépôt qttranslations.
Avertissement : Les traductions de Qt sont fournies par la communauté Qt, sans aucune garantie. Les traductions peuvent être manquantes, obsolètes ou entièrement incorrectes, au point d'être malveillantes. Il est recommandé d'auditer toutes les traductions que vous livrez.
Dans Qt 4, il y a un grand fichier monolithique .qm pour chaque 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_ dans Qt 4. Il a été créé pour faciliter le portage des applications de Qt 4 vers Qt 5. Le catalogue méta dépend de traductions qui peuvent être absentes, parce qu'elles appartiennent à des modules inutiles ou obsolètes, ce qui peut faire échouer le chargement des traductions. Si vous utilisez des modules nouveaux dans Qt 5 ou plus dans votre application, vous devez spécifier les noms des catalogues de 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 dans 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 Contrôles | 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 Location 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.