from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTranslator, QLocale
from main_window_biblio import MainWindowBiblio
app = QApplication(sys.argv)
enLangueNative = len(sys.argv) == 1
if enLangueNative:
locale = QLocale()
else:
languePays = sys.argv[1]
translators = []
for prefixeQm in ("biblioapp.", "qt_", "qtbase_"):
translator = QTranslator()
translators.append(translator)
if enLangueNative:
translator.load(locale,prefixeQm)
else:
translator.load(prefixeQm+languePays)
app.installTranslator(translator)
mainWindowBiblio = MainWindowBiblio()
mainWindowBiblio.show()
rc = app.exec_()
sys.exit(rc)
La technique utilisée est la même que celle présentée dans la première version. On a
essentiellement factorisé les trois lectures dans une boucle.
Note > Il peut sembler surprenant de stocker les instances de QTranslator dans une
liste (translators) ... qui n'est pas utilisée ! Voici l'explication : ceci est une astuce
pour contourner un problème subtil propre au portage de Qt en Python : à chaque
itération, l'assignation à la variable translator libère en mémoire l'instance
précédemment créée. Pour éviter cela, il est vital de garder dans le script Python au
moins une référence vers chaque instance de QTranslator ; la sauvegarde dans une
liste est un moyen simple de garantir cela.
Après exécution, on peut voir que les boutons ont à présent les noms correspondant à la
langue configurée.
158
Précédent

- 159/494

Suivant