A system of translations into different languages has been implemented. Added translations into Russian. Various UI fixes for valid internationalization
This commit is contained in:
87
translator.cpp
Normal file
87
translator.cpp
Normal file
@@ -0,0 +1,87 @@
|
||||
#include "translator.h"
|
||||
|
||||
#include <QTranslator>
|
||||
#include <QCoreApplication>
|
||||
#include <QQmlEngine>
|
||||
#include <QLocale>
|
||||
#include <QTimer>
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user