Browse Source

Refactored constans holding translation information

Felix Turo 3 years ago
parent
commit
5c6a05c2d0
4 changed files with 21 additions and 16 deletions
  1. 3 9
      src/classes/atranslator.cpp
  2. 6 0
      src/classes/atranslator.h
  3. 2 2
      src/gui/widgets/settingswidget.cpp
  4. 10 5
      src/opl.h

+ 3 - 9
src/classes/atranslator.cpp

@@ -1,20 +1,14 @@
 #include "atranslator.h"
 
-const static QMap<Opl::Translations, QString> AVAILABLE_L10N {
-    {Opl::Translations::English, QStringLiteral("l10n/openpilotlog_en")},
-    {Opl::Translations::German,  QStringLiteral("l10n/openpilotlog_de")},
-    {Opl::Translations::Spanish, QStringLiteral("l10n/openpilotlog_es")},
-};
-
 QTranslator* ATranslator::translator;
 
 void ATranslator::installTranslator(Opl::Translations language)
 {
     translator = new QTranslator();
-    if (translator->load(AVAILABLE_L10N[language]))
-        LOG << "Translations loaded. Selected language: " << AVAILABLE_L10N[language].right(2);
+    if (translator->load(Opl::L10N_FILES[language]))
+        LOG << "Translations loaded. Selected language: " << Opl::L10N_FILES[language].right(2);
     else
-        LOG << "Loading translations has failed. Selected language: " << AVAILABLE_L10N[language].right(2);
+        LOG << "Loading translations has failed. Selected language: " << Opl::L10N_FILES[language].right(2);
 
 
     if (qApp->installTranslator(translator))

+ 6 - 0
src/classes/atranslator.h

@@ -8,6 +8,12 @@
  * considerations for when works on translation actually start. See [here](https://bugreports.qt.io/browse/QTBUG-41736)
  * and [here](https://bugreports.qt.io/browse/QTBUG-76410).
  * Long story short, make sure to use a version of CMake that is 3.16 or earlier, or 3.19.2 or later.
+ *
+ * The translation source files (.ts) are located at /l10n and once compiled, the translation binaries
+ * are at `$BINDIR/l10n/` and can be accessed via `Opl::L10N_FILES`.
+ *
+ * When a QTranslator is installed, the UI is updated through [QWidget::changeEvent()](https://doc.qt.io/qt-5/qwidget.html#changeEvent).
+ *
  */
 class ATranslator  : public QObject {
     Q_OBJECT

+ 2 - 2
src/gui/widgets/settingswidget.cpp

@@ -91,7 +91,7 @@ void SettingsWidget::setupComboBoxes(){
             ui->approachComboBox->addItem(approach);
         // Language Combo Box
         const QSignalBlocker blocker_language(ui->languageComboBox);
-        for (const auto &lang : Opl::Translations_Strings)
+        for (const auto &lang : Opl::L10N_NAMES)
             ui->languageComboBox->addItem(lang);
     }
 }
@@ -719,7 +719,7 @@ void SettingsWidget::on_dateFormatComboBox_currentIndexChanged(int index)
 
 void SettingsWidget::on_languageComboBox_activated(const QString &arg1)
 {
-    if (arg1 != Opl::Translations_Strings[Opl::Translations::English]) {
+    if (arg1 != Opl::L10N_NAMES[Opl::Translations::English]) {
         INFO(tr("Translations are not yet available. If you are interested in making openPilotLog available in your native "
              "language, visit us <a href=\"https://%1/\">here</a> for more information."
              ).arg(QStringLiteral("github.com/fiffty-50/openpilotlog/wiki/Translations")));

+ 10 - 5
src/opl.h

@@ -85,11 +85,16 @@ public:
 }; // class ANotificationHandler
 
 enum class Translations {English, German, Spanish};
-static const QMap<Translations, QString> Translations_Strings {
-    {Translations::English, QStringLiteral("English")},
-    {Translations::German, QStringLiteral("Deutsch")},
-    {Translations::Spanish, QStringLiteral("Español")},
-    //[...]
+
+const static QMap<Opl::Translations, QString> L10N_FILES {
+    {Opl::Translations::English, QStringLiteral("l10n/openpilotlog_en")},
+    {Opl::Translations::German,  QStringLiteral("l10n/openpilotlog_de")},
+    {Opl::Translations::Spanish, QStringLiteral("l10n/openpilotlog_es")},
+};
+static const QMap<Translations, QString> L10N_NAMES {
+    {Opl::Translations::English, QStringLiteral("English")},
+    {Opl::Translations::German,  QStringLiteral("Deutsch")},
+    {Opl::Translations::Spanish, QStringLiteral("Español")},
 };
 
 static const auto ApproachTypes = QStringList{