QTranslator.
Ce court programme fonctionne parfaitement pour tous les éléments textuels définis
dans l'application. Il y a malheureusement une petite lacune : les boutons figurant sur
les boîtes de dialogue standards ne sont pas traduits : on aura par exemple des boutons
Cancel dans les boîtes de message (au lien de Annule, par exemple). Nous verrons à la
fin du chapitre comment remédier à cela.
Pour aller plus loin…
Signalons que les méthodes QTranslator.load, dans leurs deux formes, ont de
nombreux paramètres optionnels qui peuvent aider à spécifier finement les choses.
On peut notamment indiquer un répertoire particulier pour les fichiers d'éléments
textuels, si on ne veut pas les mélanger avec les fichiers sources Python.
Signalons enfin que, en alternative avec ce qu'on a montré ici, on pourrait créer des
instances de QLocale avec les références explicites aux langues et pays. Voici
comment faire :
locale = QLocale(QLocale.French,QLocale.France)
# ou
locale = QLocale(QLocale.English,QLocale.UnitedStates)
Note > Référez-vous à la documentation des classes QTranslator et QLocale pour
plus de détails.
[9] Pour être précis, la méthode QTranslator.load est surchargée, ce qui signifie qu'il
existe plusieurs implémentations distinctes selon la signature, c'est-à-dire le nombre et
les types d'arguments passés (voir la documentation de QTranslator). Ceci est à la base
une possibilité offerte par C++ (le langage natif de Qt) qui fait une résolution statique :
le compilateur est capable de reconnaître les différentes signatures et se brancher sur
l'implémentation adéquate. En Python, la surcharge statique n'est pas possible, car les
types des arguments ne sont connus qu'à l'exécution du programme. Les concepteurs de
PyQt ont heureusement prévu un mécanisme qui, à l'exécution, va intercepter les appels,
reconnaître les types des arguments passés et appeler la méthode associée. PyQt
transforme donc la surcharge statique (C++) en surcharge dynamique (Python).
139
Précédent

- 140/494

Suivant