Bonjour à tous
Tout est dans le titre. Je n'arrive pas à utiliser le fichier standard de traduction pour que les éléments natifs de Qt5 soient en français. Pourtant j'y arrivais avec Qt4
Exemple Qt4 qui fonctionne : une fenêtre principale qui appelle un QMessageBox avec Oui/Non
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 #!/usr/bin/env python3 # coding: utf-8 from sip import * from PyQt4.QtCore import * from PyQt4.QtGui import * # Application principale class QtAppli(QApplication): def __init__(self, argv): super(QtAppli, self).__init__(argv) trans=QTranslator() self.installTranslator(trans) trans.load( "qt_%s" % QLocale.system().name(), QLibraryInfo.location(QLibraryInfo.TranslationsPath), ) self.__mainWid=QtMainWindow() # __init__() def run(self): self.__mainWid.show() self.exec_() # run() # class QtAppli # Fenêtre principale class QtMainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(QtMainWindow, self).__init__(*args, **kwargs) self.setCentralWidget(QWidget(self)) self.setAttribute(Qt.WA_DeleteOnClose) mainLayout=QVBoxLayout(self.centralWidget()) mainLayout.addWidget( QPushButton("Quitter", clicked=self.close), 0, ) QMessageBox.question( self, "Confirmation", "Oui ou non ?", QMessageBox.Yes|QMessageBox.No, ) # __init__() # class QtMainWindow if __name__ == "__main__": import sys QtAppli(sys.argv).run()
Le même exemple porté sous PyQt5
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #!/usr/bin/env python3 # coding: utf-8 from sip import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * # Application principale class QtAppli(QApplication): def __init__(self, argv): super(QtAppli, self).__init__(argv) trans=QTranslator() self.installTranslator(trans) trans.load( "qt_%s" % QLocale.system().name(), QLibraryInfo.location(QLibraryInfo.TranslationsPath), ) self.__mainWid=QtMainWindow() # __init__() def run(self): self.__mainWid.show() self.exec_() # run() # class QtAppli # Fenêtre principale class QtMainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(QtMainWindow, self).__init__(*args, **kwargs) self.setCentralWidget(QWidget(self)) self.setAttribute(Qt.WA_DeleteOnClose) mainLayout=QVBoxLayout(self.centralWidget()) mainLayout.addWidget( QPushButton("Quitter", clicked=self.close), 0, ) QMessageBox.question( self, "Confirmation", "Oui ou non ?", QMessageBox.Yes|QMessageBox.No, ) # __init__() # class QtMainWindow if __name__ == "__main__": import sys QtAppli(sys.argv).run()
J'ai tout tenté. J'ai d'abord pensé que le fichier "/usr/share/qt5/translations/qt_fr.qm" était corrompu mais même en récupérant celui de Qt4 (j'ai les deux versions sur ma machine) et en le positionnant dans Qt5 ça ne change rien (inversement en copiant le fichier de Qt5 dans Qt4, ça fonctionne toujours preuve que ça ne vient pas du fichier). J'ai tenté de mettre le self.installTranslator(trans) après le trans.load(). J'ai aussi regardé le retour de ces deux fonctions (il est à True donc je pense qu'elles font bien leur job) mais rien n'y fait : mes boutons restent désespérément en anglais.
Pourtant j'ai fidèlement traduit en PyQt l'exemple C++ qui se trouve dans la doc Qt5...
Merci de vos avis.
Partager