Merge "Add basic translation support"
[apps/hvac.git] / app / translator.cpp
diff --git a/app/translator.cpp b/app/translator.cpp
new file mode 100644 (file)
index 0000000..9b67f13
--- /dev/null
@@ -0,0 +1,52 @@
+#include "translator.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QLocale>
+#include <QtCore/QTranslator>
+#include <QtCore/QDir>
+#include <QtCore/QDebug>
+
+Translator::Translator(QObject *parent)
+    : QObject(parent)
+    , m_language(QStringLiteral("C"))
+    , m_translator(nullptr)
+{
+}
+
+QString Translator::translate(const QString &string, const QString &language) const
+{
+    Q_UNUSED(language)
+    return string;
+}
+
+QString Translator::language() const
+{
+    return m_language;
+}
+
+void Translator::setLanguage(const QString &language)
+{
+    if (m_language == language) return;
+    m_language = language;
+    setTranslator(language);
+    emit languageChanged(language);
+}
+
+void Translator::setTranslator(const QString &language)
+{
+    if (m_translator) {
+        QCoreApplication::removeTranslator(m_translator);
+    } else {
+        m_translator = new QTranslator(this);
+    }
+    QLocale locale(language);
+    QString fileName = QCoreApplication::instance()->applicationName().toLower();
+    qDebug() << "####" << QDir::currentPath() << QCoreApplication::applicationDirPath();
+    if (m_translator->load(locale, fileName, QStringLiteral("_"), QStringLiteral("%1/../translations").arg(QCoreApplication::applicationDirPath()))) {
+        QCoreApplication::installTranslator(m_translator);
+    } else {
+        delete m_translator;
+        m_translator = nullptr;
+    }
+}
+