Programmation Qt/Traduire son programme

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
Programmation Qt
Programmation Qt
Sommaire
Modifier le sommaire

Il peut arriver que vous distribuez votre programme à un ami. Imaginons qu'il soit anglais. Même s'il parle français, il préférerait avoir le programme en anglais. C''est pour cela qu'on peut traduire le programme. Tout d'abord, configurons le monprojet.pro.

Configurer le projet[modifier | modifier le wikicode]

 1 #-------------------------------------------------
 2 #
 3 # Project created by QtCreator 2018-10-10T14:20:39
 4 #
 5 #-------------------------------------------------
 6 
 7 QT       += core gui
 8 
 9 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10 
11 TARGET = monprojet
12 TEMPLATE = app
13 
14 
15 SOURCES += main.cpp\
16         mainwindow.cpp
17 
18 HEADERS  += mainwindow.h
19 
20 FORMS    += mainwindow.ui

Pour l'instant, vous avez ceci. Maintenant, rajoutez la ligne :

1 TRANSLATIONS += monprojet_fr.ts monprojet_en.ts

Voilà, votre fichier .pro est configuré. Rendez-vous maintenant dans vos fichiers .cpp. Ajoutez autour de vos chaînes de caractères tr(). Cette fois-ci, c'est dans la console que nous avons rendez-vous. Entrez la ligne suivante :

lupdate monprojet.pro

Vous pouvez maintenant voir des fichiers .ts générés.

Les fichiers .ts et .qm[modifier | modifier le wikicode]

Quand vous avez installé Qt, un programme nommé Qt Linguist a aussi été installé. Allez-y.

Ouvrez les fichiers en question, puis rentrez dans les champs English Translation, par exemple, le texte traduit. Fermez ensuite le programme, et ouvrez la console :

lrelease monprojet_fr.ts monprojet_en.ts

Cela créé des fichiers .qm. Mettez-les maintenant dans le dossier de l'exécutable. Ouvrez le fichier main.cpp et entrez :

1 QTranslator translator;
2 translator.load("monprojet_en");
3 app.installTranslator(&translator);

Lancez maintenant le programme. Le programme est traduit en anglais ! Bien évidemment, cela marche pour le chinois, l'arabe, l'italien...