IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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  
+
    # lancement de l'application  
-
    app = QtGui.QApplication(sys.argv)
+
    app = QtGui.QApplication(sys.argv)
-
 
+
    #
-
    #========================================================================
+
    # pour assurer la traduction automatique du conversationnel à la locale
-
    # pour assurer la traduction automatique du conversationnel à la locale
+
    locale = QtCore.QLocale.system().name()
-
    locale = QtCore.QLocale.system().name()
+
    translator = QtCore.QTranslator ()
-
    translator = QtCore.QTranslator ()
+
    translator.load("qt_" + locale,   
-
    translator.load("qt_" + locale,   
+
          QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath))
-
          QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath))
+
    app.installTranslator(translator)
-
    app.installTranslator(translator)
+
    #  
-
 
+
    # lancement de la fenetre
-
    #========================================================================
+
    fen = Fenetre()
-
    # lancement de la fenetre
+
    fen.show()
-
    fen = Fenetre()
+
    sys.exit(app.exec_())
-
    fen.show()
+
</tt>
-
    sys.exit(app.exec_())
+
-
</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":
+
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
-
    repexe = os.path.dirname(sys.executable)  # repertoire de python.exe
+
    reppyqt4 = os.path.join(repexe, r"Lib\site-packages\PyQt4")  # repertoire de PyQt4
-
    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
-
    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
-
    includefiles += [(r"/usr/share/qt4/translations", "translations")]  # repertoire pour les traductions
+
else:
-
else:
+
    pass  # cas du Mac OSX non traité ici
-
    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:
+
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.  

Version du 13 février 2015 à 10:12

Contacter le responsable de la rubrique Accueil