diff --git a/src/lang/create_ts.sh b/src/lang/create_ts.sh index c617d22a5f1692101dc0046790defa7756aa7f0d..c301991643b6c6a0b999a55646ae33ccb9da6591 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 439872a828ac36ffc135a11765590bd056317059..3c02c32776c521d85b885c98c5b0b5ea2748bc63 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 24a70235910af9886ae981cd4ce523845c3e2bd0..222415d62c9885a8a2f58df2459d522b1bef9187 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 cc461673f1ca7efb053ed0c7ec267deaca4391ee..77a43e434fadc72a74abdab443a407da22664c9c 100644 --- a/src/view/ui/ConfigureDialog.ui +++ b/src/view/ui/ConfigureDialog.ui @@ -13,6 +13,9 @@ <property name="windowTitle"> <string>Dialog</string> </property> + <property name="locale"> + <locale language="English" country="Europe"/> + </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <layout class="QVBoxLayout" name="verticalLayout"> @@ -106,7 +109,7 @@ </widget> <widget class="QWidget" name="tab_mailleur"> <attribute name="title"> - <string>Mailleur</string> + <string>Meshing tool</string> </attribute> <widget class="QWidget" name="layoutWidget"> <property name="geometry"> @@ -121,7 +124,7 @@ <item> <widget class="QLabel" name="label"> <property name="text"> - <string>Mailleur path</string> + <string>Meshing tool path</string> </property> </widget> </item> @@ -161,14 +164,14 @@ <item> <widget class="QLabel" name="label_2"> <property name="text"> - <string>Nombre de segment</string> + <string>Segment number</string> </property> </widget> </item> <item> <widget class="QLabel" name="label_3"> <property name="text"> - <string>Taille max. du listing</string> + <string>Listing maximum size</string> </property> </widget> </item> @@ -214,14 +217,14 @@ <item> <widget class="QLabel" name="label_7"> <property name="text"> - <string>Sauvegarde automatique</string> + <string>Auto save</string> </property> </widget> </item> <item> <widget class="QLabel" name="label_8"> <property name="text"> - <string>Chemin</string> + <string>Path</string> </property> </widget> </item> @@ -246,7 +249,7 @@ <item> <widget class="QCheckBox" name="checkBox_backup"> <property name="text"> - <string>Activé</string> + <string>Enable</string> </property> <property name="tristate"> <bool>false</bool> diff --git a/src/view/ui/MainWindow.ui b/src/view/ui/MainWindow.ui index 8ccb78f6ae455c310dfde4995c83cf068dd34aa9..41ce2ca61feb19d234e53b5d9d7aeae1aafe5f41 100644 --- a/src/view/ui/MainWindow.ui +++ b/src/view/ui/MainWindow.ui @@ -201,6 +201,16 @@ <addaction name="action_menu_help_mage"/> <addaction name="action_menu_about"/> </widget> + <widget class="QMenu" name="menu_language"> + <property name="locale"> + <locale language="English" country="Europe"/> + </property> + <property name="title"> + <string>&Language</string> + </property> + <addaction name="action_english"/> + <addaction name="action_french"/> + </widget> <addaction name="menu_File"/> <addaction name="menu_network"/> <addaction name="menu_geometry"/> @@ -208,6 +218,7 @@ <addaction name="menu_run"/> <addaction name="menu_plot"/> <addaction name="menu_cartography"/> + <addaction name="menu_language"/> <addaction name="menu_help"/> </widget> <widget class="QStatusBar" name="statusbar"/> @@ -851,6 +862,16 @@ <string>Edit study</string> </property> </action> + <action name="action_english"> + <property name="text"> + <string>English</string> + </property> + </action> + <action name="action_french"> + <property name="text"> + <string>French</string> + </property> + </action> </widget> <resources/> <connections>