translator.load("biblioapp."+sys.argv[1]) app.installTranslator(translator)
mainWindowBiblio = MainWindowBiblio() mainWindowBiblio.show() rc =
app.exec_() sys.exit(rc)
Note > Comme auparavant, ce programme principal PyQt peut être pris comme une
recette de cuisine. Il n'est pas obligatoire de le comprendre en détail pour la suite ;
le lecteur pressé peut résolument passer à la section suivante !
Voici des explications sur les lignes qui ont été ajoutées.
On crée un traducteur, instance de QTranslator. Simple !
On teste le nombre d'arguments : s'il n'y aucun argument passé sys.argv ne contient
que le nom du programme : ['start_app.py'], une liste de longueur 1.
Dans le mode sans argument, on crée une instance de QLocale sans argument : ceci
récupère les données configurées au niveau de l'OS, notamment la langue et le pays.
On charge dans le traducteur le fichier d'éléments textuels .qm suivant la langue et le
pays récupéré dans locale. Par exemple, sur un ordinateur configuré en
English/UnitedStates, le fichier chargé sera biblioapp.en_US.qm.
Note > Si aucun fichier n'est trouvé pour la langue et le pays configuré, il n'y a
pas d'erreur : l'application s'affichera avec les éléments textuels du code source
non traduits (voir l'encadré Faut⁠ -⁠ il traduire toutes les chaînes ?).
Dans le mode avec argument, on appelle une autre mouture de la méthode
translator.load [9] qui charge un fichier nommé explicitement. On obtient ce nom
de fichier par concaténation avec l'argument passé (le suffixe .qm n'est pas
nécessaire). Comme signalé au point , si l'argument ne correspond à aucun des
fichiers .qm connus, aucune erreur n'est reportée [10] .
On termine en "installant" le traducteur dans l'application. Ceci veut dire que son
rôle est à présent officialisé : tout objet PyQt qui aura besoin de traductions, depuis
les menus jusqu'aux boutons, s'adressera à cet objet traducteur, instance de
138
Précédent

- 139/494

Suivant