2. Arguments
Dans une application plus compliquée que BiblioApp, toutes les chaînes de caractères
affichées ne sont pas toujours constantes. Par exemple, dans un éditeur de texte, la
fonction de recherche permet souvent de compter les occurrences, avec une réponse de
la forme 42 occurrences trouvées. Si l'application ne gère pas le pluriel, il n'est pas
rare d'afficher un 42 occurrence(s) trouvée(s), ce qui n'est guère esthétique ou sérieux.
Une solution simple serait d'ajouter une condition dans le code : si le nombre
d'occurrences est d'une unité, alors pas de s ; sinon, mettre un s. Cependant, ces tests
simples échouent déjà pour de l'anglais : le pluriel est de mise pour zéro unité,
contrairement au français. La situation est encore pire en polonais, qui possède trois
nombres (le singulier, le paucal et le pluriel).
Mieux vaut donc utiliser la solution proposée dans l'environnement Qt Quick, qui gère
tous ces cas automatiquement et permet au traducteur d'accorder les mots à ce nombre
(mais aussi de les réordonner, si nécessaire).
Lors de l'appel à qsTr, tous les paramètres à remplacer sont représentés par un
symbole pourcent % suivi d'un chiffre ; ensuite, les valeurs sont indiquées par des
appels à arg (un par argument). Par exemple, pour le nombre d'occurrences :
Text {
text: qsTr("%1 occurrence(s) trouvée(s)").arg(nOccurrences)
}
Quand il y a plusieurs arguments à remplacer, les appels à arg peuvent s'effectuer en
cascade :
Text {
text: qsTr("Traitement en cours : fichier %1 sur
%2").arg(i).arg(n)
}
Cette structure de base peut s'adapter à d'autres cas. Notamment, l'affichage des
nombres varie d'une langue à l'autre : le français utilise l'espace comme séparateur des
milliers et la virgule pour les décimales 12 345,67, l'anglais des virgules et des points
12,345.67, l'allemand l'inverse 12.345,67. Utiliser %L1 à la place de %1 demande à
PyQt de gérer ces diversités, en étant cohérent avec la langue de l'utilisateur.
Text {
400
Précédent

- 401/494

Suivant