Browse Source

Merge pull request #373 from djeada/copilot/verify-qml-app-build-pt-br

Integrate pt_br translation into build system
Adam Djellouli 1 month ago
parent
commit
698584c5a9
6 changed files with 24 additions and 13 deletions
  1. 1 0
      CMakeLists.txt
  2. 4 1
      app/core/language_manager.cpp
  3. 7 1
      main.cpp
  4. 1 0
      translations.qrc
  5. BIN
      translations/app_pt_br.qm
  6. 11 11
      ui/qml/SettingsPanel.qml

+ 1 - 0
CMakeLists.txt

@@ -198,6 +198,7 @@ if(QT_VERSION_MAJOR EQUAL 6)
             assets/visuals/unit_visuals.json
             translations/app_en.qm
             translations/app_de.qm
+            translations/app_pt_br.qm
         DEPENDENCIES
             Qt6::QuickControls2
     )

+ 4 - 1
app/core/language_manager.cpp

@@ -10,7 +10,7 @@
 LanguageManager::LanguageManager(QObject *parent)
     : QObject(parent), m_currentLanguage("en"),
       m_translator(new QTranslator(this)) {
-  m_availableLanguages << "en" << "de";
+  m_availableLanguages << "en" << "de" << "pt_br";
 
 #ifndef DEFAULT_LANG
 #define DEFAULT_LANG "en"
@@ -66,5 +66,8 @@ auto LanguageManager::languageDisplayName(const QString &language) -> QString {
   if (language == "de") {
     return "Deutsch (German)";
   }
+  if (language == "pt_br") {
+    return "Português (Brasil)";
+  }
   return language;
 }

+ 7 - 1
main.cpp

@@ -282,7 +282,7 @@ auto main(int argc, char *argv[]) -> int {
   qInfo() << "Setting up QML engine...";
   engine = std::make_unique<QQmlApplicationEngine>();
   qInfo() << "Adding context properties...";
-  engine->rootContext()->setContextProperty("language_manager",
+  engine->rootContext()->setContextProperty("languageManager",
                                             language_manager.get());
   engine->rootContext()->setContextProperty("game", game_engine.get());
   qInfo() << "Adding import path...";
@@ -306,6 +306,12 @@ auto main(int argc, char *argv[]) -> int {
   qInfo() << "QML loaded successfully, root objects count:"
           << engine->rootObjects().size();
 
+  // Connect language changed signal to retranslate QML
+  qInfo() << "Connecting language change handler...";
+  QObject::connect(language_manager.get(), &LanguageManager::languageChanged,
+                   engine.get(), &QQmlApplicationEngine::retranslate);
+  qInfo() << "Language change handler connected";
+
   qInfo() << "Finding QQuickWindow...";
   auto *root_obj = engine->rootObjects().first();
   auto *window = qobject_cast<QQuickWindow *>(root_obj);

+ 1 - 0
translations.qrc

@@ -2,5 +2,6 @@
     <qresource prefix="/translations">
         <file>translations/app_en.qm</file>
         <file>translations/app_de.qm</file>
+        <file>translations/app_pt_br.qm</file>
     </qresource>
 </RCC>

BIN
translations/app_pt_br.qm


+ 11 - 11
ui/qml/SettingsPanel.qml

@@ -122,8 +122,8 @@ Item {
                                     value: 100
                                     stepSize: 1
                                     onValueChanged: {
-                                        if (typeof gameEngine !== 'undefined' && gameEngine.audioSystem)
-                                            gameEngine.audioSystem.setMasterVolume(value / 100);
+                                    if (typeof game !== 'undefined' && game.audioSystem)
+                                        game.audioSystem.setMasterVolume(value / 100);
 
                                     }
                                 }
@@ -156,8 +156,8 @@ Item {
                                     value: 100
                                     stepSize: 1
                                     onValueChanged: {
-                                        if (typeof gameEngine !== 'undefined' && gameEngine.audioSystem)
-                                            gameEngine.audioSystem.setMusicVolume(value / 100);
+                                    if (typeof game !== 'undefined' && game.audioSystem)
+                                        game.audioSystem.setMusicVolume(value / 100);
 
                                     }
                                 }
@@ -190,8 +190,8 @@ Item {
                                     value: 100
                                     stepSize: 1
                                     onValueChanged: {
-                                        if (typeof gameEngine !== 'undefined' && gameEngine.audioSystem)
-                                            gameEngine.audioSystem.setSoundVolume(value / 100);
+                                    if (typeof game !== 'undefined' && game.audioSystem)
+                                        game.audioSystem.setSoundVolume(value / 100);
 
                                     }
                                 }
@@ -224,8 +224,8 @@ Item {
                                     value: 100
                                     stepSize: 1
                                     onValueChanged: {
-                                        if (typeof gameEngine !== 'undefined' && gameEngine.audioSystem)
-                                            gameEngine.audioSystem.setVoiceVolume(value / 100);
+                                    if (typeof game !== 'undefined' && game.audioSystem)
+                                        game.audioSystem.setVoiceVolume(value / 100);
 
                                     }
                                 }
@@ -297,10 +297,10 @@ Item {
 
                                     return languageManager.languageDisplayName(currentText);
                                 }
-                                onCurrentTextChanged: {
-                                    if (typeof languageManager !== 'undefined' && currentText)
+                                onActivated: function(index) {
+                                    if (typeof languageManager !== 'undefined' && currentText) {
                                         languageManager.setLanguage(currentText);
-
+                                    }
                                 }
 
                                 delegate: ItemDelegate {