diff --git a/src/lang/create_ts.sh b/src/lang/create_ts.sh index c617d22a..c3019916 100755 --- a/src/lang/create_ts.sh +++ b/src/lang/create_ts.sh @@ -3,7 +3,7 @@ SOURCES=$(find ../ -name "*.py") FROM=$(find ../ -name "*.ui") -LANG="fr de" +LANG="fr" for l in $LANG do diff --git a/src/pamhyr.py b/src/pamhyr.py index 439872a8..3c02c327 100755 --- a/src/pamhyr.py +++ b/src/pamhyr.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import sys, os +import locale from PyQt5.QtCore import QTranslator from PyQt5.QtWidgets import QApplication @@ -15,7 +16,9 @@ def main(): app = QApplication(sys.argv) translator = QTranslator() - translator.load(os.path.dirname(__file__) + "/lang/fr.qm") + lang = locale.getdefaultlocale() + if "fr" not in lang[0]: + translator.load(os.path.dirname(__file__) + "/lang/fr.qm") app.installTranslator(translator) application = ApplicationWindow(conf=conf) diff --git a/src/view/MainWindow.py b/src/view/MainWindow.py index 24a70235..222415d6 100644 --- a/src/view/MainWindow.py +++ b/src/view/MainWindow.py @@ -3,6 +3,9 @@ import os from PyQt5 import QtGui +from PyQt5.QtCore import ( + QTranslator, QEvent +) from PyQt5.QtWidgets import ( QMainWindow, QApplication, QAction, QFileDialog, @@ -61,6 +64,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow): self.init_callback() self.default_style() + + self.trans = QTranslator(self) #self.ui.retranslateUi() def enable_actions(self, action:str, enable:bool): @@ -110,12 +115,36 @@ class ApplicationWindow(QMainWindow, ListedSubWindow): "action_toolBar_sections": lambda: self.open_dummy("Tronçons"), "action_toolBar_frictions": lambda: self.open_dummy("Frottements"), "action_toolBar_building": lambda: self.open_dummy("Ouvrages"), + ## Language + "action_english": lambda: self.set_language(""), + "action_french": lambda: self.set_language("fr"), } for action in actions: self.ui.findChild(QAction, action)\ .triggered.connect(actions[action]) + def set_language(self, lang): + if lang != "": + translator = QTranslator() + translator.load(os.path.dirname(__file__) + f"/lang/{lang}.qm") + QApplication.instance().installTranslator(translator) + self.trans = translator + else: + QApplication.instance().removeTranslator(self.trans) + + self.retranslateUi() + + def retranslateUi(self): + for action in self.menubar.children(): + if isinstance(action, QAction): + action.setText(self.trans("MainWindow", action.getText())) + + def changeEvent(self, event): + if event.type() == QEvent.LanguageChange: + self.retranslateUi() + super(ApplicationWindow, self).changeEvent(event) + def default_style(self): """Set default window style diff --git a/src/view/ui/ConfigureDialog.ui b/src/view/ui/ConfigureDialog.ui index cc461673..77a43e43 100644 --- a/src/view/ui/ConfigureDialog.ui +++ b/src/view/ui/ConfigureDialog.ui @@ -13,6 +13,9 @@ Dialog + + + @@ -106,7 +109,7 @@ - Mailleur + Meshing tool @@ -121,7 +124,7 @@ - Mailleur path + Meshing tool path @@ -161,14 +164,14 @@ - Nombre de segment + Segment number - Taille max. du listing + Listing maximum size @@ -214,14 +217,14 @@ - Sauvegarde automatique + Auto save - Chemin + Path @@ -246,7 +249,7 @@ - Activé + Enable false diff --git a/src/view/ui/MainWindow.ui b/src/view/ui/MainWindow.ui index 8ccb78f6..41ce2ca6 100644 --- a/src/view/ui/MainWindow.ui +++ b/src/view/ui/MainWindow.ui @@ -201,6 +201,16 @@ + + + + + + &Language + + + + @@ -208,6 +218,7 @@ + @@ -851,6 +862,16 @@ Edit study + + + English + + + + + French + +