Pour tester ou déployer l'application, on invoque l'utilitaire lrelease qui compile
le fichier .ts en un fichier .qm qui est directement exploitable par l'application.
Note > Vous l'aurez peut-être remarqué : les noms des deux derniers outils cités,
Qt Linguist et lrelease, ne contiennent pas de Py. Ce n'est pas un oubli : ils font
tous deux partie de l'environnement Qt natif, indépendant donc de PyQt. Vous
pouvez donc, pour ces deux outils, utiliser toute référence documentaire de Qt,
voire votre expertise acquise sur un projet Qt/C++.
À l'exécution, l'application lit le fichier .qm (le plus souvent au démarrage), selon
la langue configurée. Pour ce faire, le programmeur instancie un objet QTranslator
et invoque la méthode load en passant le nom du fichier à charger, par exemple
biblioapp_en.qm pour avoir une version anglaise.
Nous avons parlé d'un découplage fort entre les tâches de programmation et celles de
traduction. Concrètement, cela veut dire que la chaîne de traitement présentée peut être
itérée :
la traduction du fichier .ts n'a pas besoin d'être terminée à 100 % pour pouvoir
exécuter l'application ; les chaînes de caractères non traduites seront simplement
affichées dans leur langue d'origine. Cette caractéristique est d'ailleurs utile pour
les libellés qu'on veut garder inchangés dans toutes les langues (par exemple, le
nom "BiblioApp" placé dans la barre titre) ;
l'invocation de l'utilitaire pylupdate5 ne crée les fichiers .ts que la toute
première fois ; les fois suivantes, les fichiers sont mis à jour de manière
intelligente, en n'ajoutant que les nouveaux éléments à traduire sans toucher à ceux
déjà traduits.
Nous allons concrétiser tout cela sur l'exemple de l'application BiblioApp pour la
rendre accessible à des utilisateurs francophones et anglophones. Pour cela, nous
allons décliner la chaîne présentée plus haut en six étapes :
1. modification du programme principal ;
2. marquage des éléments textuels à traduire dans les sources ;
3. création d'un fichier .pro ;
4. génération des fichiers .ts avec pylupdate5 ;
135
Précédent

- 136/494

Suivant