Plusieurs techniques permettent l'internationalization d'un programme conçu avec le framework Qt.
La procédure que j'explique sur cette page sert à incorporer des traductions dans un fichier exécutable et de les utiliser tout de suite, sans avoir à imposer l'endroit où, sur le système d'un utilisateur, les fichiers*.qm seront stockés.
Ma manière de faire n'est pas vraiment spéciale
,
parce que je n'utilise que ce que l'environnement de
développement Qt met à disposition. Quand même, je ne suis plus
les recommandations que vous trouvez dans le Web ou les textes
d'aide, qui accompagnent les outils de traduction, d'abord,
parce que je ne les comprends pas !
Vous devraient probablement comparer mes explications ici à ceux que vous trouvez ailleurs, puis faire ce que vous considérez nécessaire …
La version de Qt que j'utilise au moment que j'écris cette page, est 6.4
Ce sont des étapes que je vais seulement lister. Pour plus de détails, consultez le manuel du logiciel QtLinguist.
resource-prefixpar défaut. Par exemple;
lupdate-proqui sert à la même tache).
Qt-Linguistau même but, mais en prenant en considération le contexte de chaque fragment dans le programme.
Ce qui reste encore à faire pour que les traductions deviennent accessibles à l'application, c'est la compilation de chaque fichier *.ts dans un fichier en format Qt message (*.qm).
Dans le fichier de projet, vous indiquez les fichiers de traduction:
TRANSLATIONS += project_name_fr_FR.ts \ project_name_de_DE.ts
La compilation des traductions dans des fichiers *.qm sera
accompli par l'utilitaire lrelease. Pour ça et
pour imposer l'encastrement des traductions dans le fichier
exécutable, deux valeurs supplémentaires sont ajoutées dans la
variable CONFIG
, dans le même fichier de projet
:
CONFIG += lrelease embed_translations TRANSLATIONS += project_name_fr_FR.ts \ project_name_de_DE.ts
Si un Makefile existe déjà, exécutez d'abord
:~/[project]$ make distclean
pour effacer des éventuels restes des compilations
précédentes
Maintenant recréez le Makefile en exécutant qmake
:
:~/[project]$ qmake.
Les modifications effectuées dans le fichier de projet auront pour conséquence la création de fichiers supplémentaires. Le premier est le fichier de ressources par défault qmake_qmake_qm_files.qrc que vous voyez après l'exécution de qmake. Il contient le future emplacement des fichiers *.qm:
<!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="i18n"> <file alias="project_fr_FR.qm">/project/.qm/project_fr_FR.qm</file> <file alias="project_de_DE.qm">/project/.qm/project_de_DE.qm</file> </qresource> </RCC>
Le répertoire .qm sera crée pendant l'exécution de
make, comme les fichiers *.qm correspondants aux traductions.
Le resource prefix
"i18n" est le même qui sert
comme deuxième paramètre à la méthode
QTranslator::load() (voir plus
haut).
Maintenant que le Makefile et le fichier de ressources
existent, vous pouvez compiler le projet en exécutant
:~/[project]$ make.
Ceci va d'abord trouver l'utilitaire lrelease, compiler les fichiers *.qm et les déposer dans le répertoire caché .qm, puis générer un nouveau fichier *.cpp et un fichier d'en-tête *.h par traduction. Enfin, les traductions seront compilées avec le reste du code source et intégrées dans le fichier exécutable du logiciel.
La plupart des actions décrites ci-dessus base sur les défauts, prévus par le framework Qt. Si vous le préférez, vous pouvez modifier quelques paramètres afin de
Je ne vais – par contre – pas vous assister avec ça.