From a9339838ac295a4d045433c1b20fd5666fb35575 Mon Sep 17 00:00:00 2001 From: Ilya Kitaev Date: Tue, 19 Jul 2016 23:31:09 +0300 Subject: TranslationManager, Russian translation example --- TranslationManager.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 TranslationManager.cpp (limited to 'TranslationManager.cpp') diff --git a/TranslationManager.cpp b/TranslationManager.cpp new file mode 100644 index 00000000..69448ce2 --- /dev/null +++ b/TranslationManager.cpp @@ -0,0 +1,63 @@ +#include "TranslationManager.h" + +#include +#include +#include +#include +#include + + +TranslationManager * TranslationManager::m_instance = nullptr; + + +TranslationManager::TranslationManager(QObject *parent) : QObject(parent) +{ + m_translator = new QTranslator(this); +} + +bool TranslationManager::setLanguage(const QString &language) +{ + qDebug() << __FUNCTION__ << " " << language; + // if language is "en", remove translator + if (language.toLower() == "en") { + qApp->removeTranslator(m_translator); + emit languageChanged(); + return true; + } + + // we expecting to have translation files in "i18n" directory + QString dir = qApp->applicationDirPath() + QDir::separator() + "i18n"; + + QString filename = "monero-core_" + language; + + qDebug("%s: loading translation file '%s' from '%s", + __FUNCTION__, qPrintable(filename), qPrintable(dir)); + + + if (m_translator->load(filename, dir)) { + qDebug("%s: translation for language '%s' loaded successfully", + __FUNCTION__, qPrintable(language)); + // TODO: apply locale? + qApp->installTranslator(m_translator); + emit languageChanged(); + return true; + } else { + qCritical("%s: error loading translation for language '%s'", + __FUNCTION__, qPrintable(language)); + return false; + } +} + +TranslationManager *TranslationManager::instance() +{ + if (!m_instance) { + m_instance = new TranslationManager(); + } + return m_instance; +} + +QString TranslationManager::emptyString() +{ + return ""; +} + -- cgit v1.2.3