Avoir les QMessageBox traduits
De WikiDeveloppez.
(Différences entre les versions)
Voilà le code à insérer (Python 3), ce qui donnera pour le code de démarrage standard: | Voilà le code à insérer (Python 3), ce qui donnera pour le code de démarrage standard: | ||
- | <tt> | + | <tt>from PyQt4 import QtCore, QtGui |
- | from PyQt4 import QtCore, QtGui | + | # ... |
- | # ... | + | # ...ici la classe Fenetre |
- | # ...ici la classe Fenetre | + | # ... |
- | # ... | + | if __name__ == "__main__": |
- | if __name__ == "__main__": | + | |
- | + | # lancement de l'application | |
- | + | app = QtGui.QApplication(sys.argv) | |
- | + | # | |
- | + | # pour assurer la traduction automatique du conversationnel à la locale | |
- | + | locale = QtCore.QLocale.system().name() | |
- | + | translator = QtCore.QTranslator () | |
- | + | translator.load("qt_" + locale, | |
- | + | QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)) | |
- | + | app.installTranslator(translator) | |
- | + | # | |
- | + | # lancement de la fenetre | |
- | + | fen = Fenetre() | |
- | + | fen.show() | |
- | + | sys.exit(app.exec_()) | |
- | + | </tt> | |
- | + | ||
- | </tt> | + | |
===== Solution pour un exécutable "cx_freeze" ===== | ===== Solution pour un exécutable "cx_freeze" ===== | ||
La solution est dès lors évidente: | La solution est dès lors évidente: | ||
- | + | 1- pendant le traitement par cx_freeze, il faut recopier le contenu du répertoire cherché (répertoire translations de PyQt4 à trouver en fonction de votre OS) dans un sous-répertoire "translations". Cela peut se faire automatiquement en utilisant l'option "include_files": | |
Pour le setup.py de cx_freeze (en plus des éventuelles autres copies à faire par l'option "include_files"): | Pour le setup.py de cx_freeze (en plus des éventuelles autres copies à faire par l'option "include_files"): | ||
- | <tt> | + | <tt>if sys.platform == "win32": |
- | if sys.platform == "win32": | + | repexe = os.path.dirname(sys.executable) # repertoire de python.exe |
- | + | reppyqt4 = os.path.join(repexe, r"Lib\site-packages\PyQt4") # repertoire de PyQt4 | |
- | + | includefiles += [(os.path.join(reppyqt4, "translations"), "translations")] # recopie du repertoire pour les traductions | |
- | + | elif sys.platform == "linux2": | |
- | elif sys.platform == "linux2": | + | includefiles += [(r"/usr/share/qt4/translations", "translations")] # repertoire pour les traductions |
- | + | else: | |
- | else: | + | pass # cas du Mac OSX non traité ici |
- | + | </tt> | |
- | </tt> | + | |
- | + | 2- il faut donner la possibilité au programme exécutable de trouver les fichiers de traduction: on fait ça facilement avec un simple fichier qt.conf qui donne les bonnes adresses: | |
Fichier qt.conf, à placer simplement au même niveau que l'exécutable (exe sous Windows): | Fichier qt.conf, à placer simplement au même niveau que l'exécutable (exe sous Windows): | ||
- | <tt> | + | <tt>[Paths] |
- | [Paths] | + | Translations = translations |
- | Translations = translations | + | </tt> |
- | </tt> | + | |
Et là, ça marche dans tous les cas. | Et là, ça marche dans tous les cas. |