2. Marquage des éléments textuels à
traduire dans les sources
Dans nos fichiers sources, certaines chaînes de caractères sont à traduire et d'autres
pas : par exemple "Titre" est à traduire, tandis que ", " (par exemple, un séparateur
sur lequel on applique la méthode join) ne l'est pas. En définitive, seul le
programmeur sait faire la différence.
Avant de lancer la chaîne de traduction présentée plus haut, le programmeur doit
appliquer deux règles dans ses fichiers sources pour que les différents outils puissent
repérer et traiter les chaînes de caractères à traduire. Il doit ainsi :
placer toutes les chaînes à traduire dans un appel à la méthode self.tr(…) ;
s'assurer que toutes les chaînes ne contiennent que des caractères ASCII
(notamment, pas de caractères accentués).
Par exemple, voici ce que cela donne sur la méthode MainBiblioApp.closeEvent :
def closeEvent(self,event):
if not self.fichierNonEnregistre:
event.accept()
else:
messageConfirmation = self.tr("Etes-vous sur de vouloir
quitter" \
" BiblioApp sans enregistrer le
fichier ?")
reponse =
QMessageBox.question(self,self.tr("Confirmation"),
messageConfirmation,
QMessageBox.Yes,QMessageBox.No)
if reponse == QMessageBox.Yes:
event.accept()
else:
event.ignore()
L'appel à self.tr(…) a deux buts : d'une part, il sert à marquer les chaînes à traduire
pour que pylupdate5 puisse les extraire ; d'autre part, il permet, à l'exécution, de
substituer la chaîne par sa traduction dans la langue choisie. Ces points vont être
explicités dans la suite (voir respectivement Section 4, Génération des fichiers .ts :
141
traduire dans les sources
Dans nos fichiers sources, certaines chaînes de caractères sont à traduire et d'autres
pas : par exemple "Titre" est à traduire, tandis que ", " (par exemple, un séparateur
sur lequel on applique la méthode join) ne l'est pas. En définitive, seul le
programmeur sait faire la différence.
Avant de lancer la chaîne de traduction présentée plus haut, le programmeur doit
appliquer deux règles dans ses fichiers sources pour que les différents outils puissent
repérer et traiter les chaînes de caractères à traduire. Il doit ainsi :
placer toutes les chaînes à traduire dans un appel à la méthode self.tr(…) ;
s'assurer que toutes les chaînes ne contiennent que des caractères ASCII
(notamment, pas de caractères accentués).
Par exemple, voici ce que cela donne sur la méthode MainBiblioApp.closeEvent :
def closeEvent(self,event):
if not self.fichierNonEnregistre:
event.accept()
else:
messageConfirmation = self.tr("Etes-vous sur de vouloir
quitter" \
" BiblioApp sans enregistrer le
fichier ?")
reponse =
QMessageBox.question(self,self.tr("Confirmation"),
messageConfirmation,
QMessageBox.Yes,QMessageBox.No)
if reponse == QMessageBox.Yes:
event.accept()
else:
event.ignore()
L'appel à self.tr(…) a deux buts : d'une part, il sert à marquer les chaînes à traduire
pour que pylupdate5 puisse les extraire ; d'autre part, il permet, à l'exécution, de
substituer la chaîne par sa traduction dans la langue choisie. Ces points vont être
explicités dans la suite (voir respectivement Section 4, Génération des fichiers .ts :
141
