séparés à traduire — ce qui peut poser des problèmes grammaticaux insolubles aux
traducteurs. La bonne approche consiste à utiliser les techniques natives de Python
pour l'interpolation des chaînes de caractères (en anglais, string formating). Il faut
juste veiller à ne donner en argument de self.tr que la chaîne de caractères
statique, donc avant substitution des arguments. Voici quelques exemples possibles,
qui donnent un résultat équivalent :
self.tr("Il y a %d livres dans le fichier '%s'.") %
(nbLivres,nomFichier)
# ou
self.tr("Il y a {:d} livres dans le fichier
'{}'.").format(nbLivres,nomFichier)
# ou
self.tr("Il y a {0} livres dans le fichier
'{1}'.").format(nbLivres,nomFichier)
# ou
…
Beaucoup d'autres variantes sont permises par Python (voir la documentation).
L'élément textuel source à traduire sera celui passé en argument de self.tr, sans
aucune altération. Le traducteur humain devra simplement veiller à bien respecter
les arguments formels de l'élément textuel. Par exemple, avec la troisième mouture
vue plus haut, l'élément textuel source sera "Il y a {0} livres dans le
fichier '{1}'." qu'on traduira par exemple en "There are {0} books in the
file '{1}'.".
Attention > La documentation Qt parle d'une méthode arg(…), applicable sur des
chaînes contenant des arguments %1, %2, etc. Ceci n'est PAS applicable en PyQt 5.
En effet, cette méthode suppose l'utilisation de la classe C++ QString, qui n'est
pas portée en PyQt 5 ,car elle fait largement double emploi avec la classe str
native de Python. Ceci n'est vraiment pas un problème sachant que les options de
formatage sont bien plus puissantes en Python (les exemples précédents ne
forment qu'un minuscule échantillon).
[11] Si l'on tente de laisser les chaînes unicode inchangées, on a notamment des ennuis
avec l'utilitaire pylupdate5 : le caractère "euro" (€) provoque une erreur ; la première
exécution génère un fichier .ts correct (avec par exemple Résumé)
mais, curieusement, les exécutions suivantes corrompent les chaînes de caractères avec
accents (Résumé), etc.
143
Précédent

- 144/494

Suivant