diff --git a/electrum/gui/qml/components/Preferences.qml b/electrum/gui/qml/components/Preferences.qml index 0471e0f2b..805e2be96 100644 --- a/electrum/gui/qml/components/Preferences.qml +++ b/electrum/gui/qml/components/Preferences.qml @@ -46,7 +46,20 @@ Pane { ElComboBox { id: language - enabled: false + textRole: 'text' + valueRole: 'value' + model: Config.languagesAvailable + onCurrentValueChanged: { + if (activeFocus) { + if (Config.language != currentValue) { + Config.language = currentValue + var dialog = app.messageDialog.createObject(app, { + text: qsTr('Please restart Electrum to activate the new GUI settings') + }) + dialog.open() + } + } + } } Label { @@ -355,6 +368,7 @@ Pane { } Component.onCompleted: { + language.currentIndex = language.indexOfValue(Config.language) baseUnit.currentIndex = _baseunits.indexOf(Config.baseUnit) thousands.checked = Config.thousandsSeparator currencies.currentIndex = currencies.indexOfValue(Daemon.fx.fiatCurrency) diff --git a/electrum/gui/qml/qeconfig.py b/electrum/gui/qml/qeconfig.py index ec0e354e5..0439bc801 100644 --- a/electrum/gui/qml/qeconfig.py +++ b/electrum/gui/qml/qeconfig.py @@ -2,6 +2,7 @@ from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject from decimal import Decimal +from electrum.i18n import set_language, languages from electrum.logging import get_logger from electrum.util import DECIMAL_POINT_DEFAULT, format_satoshis from electrum.invoices import PR_DEFAULT_EXPIRATION_WHEN_CREATING @@ -16,6 +17,25 @@ class QEConfig(AuthMixin, QObject): super().__init__(parent) self.config = config + languageChanged = pyqtSignal() + @pyqtProperty(str, notify=languageChanged) + def language(self): + return self.config.get('language') + + @language.setter + def language(self, language): + if language not in languages: + return + if self.config.get('language') != language: + self.config.set_key('language', language) + set_language(language) + self.languageChanged.emit() + + languagesChanged = pyqtSignal() + @pyqtProperty('QVariantList', notify=languagesChanged) + def languagesAvailable(self): + return list(map(lambda x: {'value': x[0], 'text': x[1]}, languages.items())) + autoConnectChanged = pyqtSignal() @pyqtProperty(bool, notify=autoConnectChanged) def autoConnect(self):