From be80a217f6bb59ddfcd58a344df67691e9ad73d8 Mon Sep 17 00:00:00 2001 From: 0penBrain <48731257+0penBrain@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:50:15 +0100 Subject: [PATCH] Gui: add live retranslation to dimension indicator --- src/Gui/MainWindow.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 239862255c..05eed66704 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -171,8 +171,7 @@ public: auto* actionGrp = new QActionGroup(menu); int num = static_cast(Base::UnitSystem::NumUnitSystemTypes); for (int i = 0; i < num; i++) { - QAction* action = menu->addAction(qApp->translate("Gui::Dialog::DlgSettingsUnits", - Base::UnitsApi::getDescription(static_cast(i)))); + QAction* action = menu->addAction(QStringLiteral("UnitSchema%1").arg(i)); actionGrp->addAction(action); action->setCheckable(true); QObject::connect(action, &QAction::toggled, this, [this,i](bool checked) { @@ -183,9 +182,10 @@ public: // Update the application to show the unit change Gui::Application::Instance->onUpdate(); } - } ); + } ); } setMenu(menu); + retranslateUi(); unitChanged(); getWindowParameter()->Attach(this); } @@ -203,6 +203,16 @@ public: } } + void changeEvent(QEvent *event) override + { + if (event->type() == QEvent::LanguageChange) { + retranslateUi(); + } + else { + QPushButton::changeEvent(event); + } + } + private: void unitChanged(void) { @@ -216,6 +226,17 @@ private: action->setChecked(true); } } + + void retranslateUi() { + auto actions = menu()->actions(); + int maxSchema = static_cast(Base::UnitSystem::NumUnitSystemTypes); + assert(actions.size() <= maxSchema); + for(int i = 0; i < maxSchema ; i++) + { + actions[i]->setText(qApp->translate("Gui::Dialog::DlgSettingsUnits", + Base::UnitsApi::getDescription(static_cast(i)))); + } + } }; // -------------------------------------