#include "translator.h" #include #include #include #include #include Translator::Translator(QQmlEngine *engine, QObject *parent) : QObject(parent), mQmlEngine(engine), mCurrentTranslator(new QTranslator(this)) { mNamesMap = { {Language::English, tr("EN")}, {Language::Russian, tr("RU")}, {Language::Italian, tr("IT")} }; mIconsMap = { {Language::English, "qrc:/Icons/english-flag.svg"}, {Language::Russian, "qrc:/Icons/russian-flag.svg"}, {Language::Italian, "qrc:/Icons/italian-flag.svg"} }; mTranslationsMap = { {Language::English, ":/cubo_en.qm"}, {Language::Russian, ":/cubo_ru.qm"}, {Language::Italian, ":/cubo_it.qm"} }; QCoreApplication::installTranslator(mCurrentTranslator); if (QLocale::system().language() == QLocale::Russian) { setCurrentLanguage(Language::Russian); } else if (QLocale::system().language() == QLocale::Italian) { setCurrentLanguage(Language::Italian); } else { setCurrentLanguage(Language::English); } } QString Translator::languageName(Language language) const { return mNamesMap.value(language); } QString Translator::languageIcon(Language language) const { return mIconsMap.value(language); } Translator::Language Translator::currentLanguage() const { return mCurrentLanguage; } void Translator::setCurrentLanguage(Language language) { if (mCurrentTranslator->load(mTranslationsMap.value(language))) { QTimer::singleShot(0, this, [this]{ mQmlEngine->retranslate();} ); } mCurrentLanguage = language; emit currentLanguageChanged(); emit currentLanguageNameChanged(); emit currentLanguageIconChanged(); } QString Translator::currentLanguageName() const { return languageName(mCurrentLanguage); } QString Translator::currentLanguageIcon() const { return languageIcon(mCurrentLanguage); }