parent
de7bd2eb97
commit
a9339838ac
@ -0,0 +1,63 @@
|
||||
#include "TranslationManager.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QTranslator>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
#include <QFileInfo>
|
||||
|
||||
|
||||
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 "";
|
||||
}
|
||||
|
@ -0,0 +1,29 @@
|
||||
#ifndef TRANSLATIONMANAGER_H
|
||||
#define TRANSLATIONMANAGER_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class QTranslator;
|
||||
class TranslationManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString emptyString READ emptyString NOTIFY languageChanged)
|
||||
public:
|
||||
Q_INVOKABLE bool setLanguage(const QString &language);
|
||||
static TranslationManager *instance();
|
||||
|
||||
QString emptyString();
|
||||
|
||||
signals:
|
||||
void languageChanged();
|
||||
|
||||
private:
|
||||
explicit TranslationManager(QObject *parent = 0);
|
||||
|
||||
private:
|
||||
static TranslationManager * m_instance;
|
||||
QTranslator * m_translator;
|
||||
|
||||
};
|
||||
|
||||
#endif // TRANSLATIONMANAGER_H
|
@ -1,14 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<languages>
|
||||
<language display_name="US English" locale="en_US" wallet_name="English" flag="/lang/flags/usa.png" qs="none"/>
|
||||
<language display_name="UK English" locale="en_GB" wallet_name="English" flag="/lang/flags/uk.png" qs="none"/>
|
||||
<language display_name="Russia" locale="ru_RU" wallet_name="English" flag="/lang/flags/russia.png" qs="none"/>
|
||||
<language display_name="RPA" locale="TODO" wallet_name="English" flag="/lang/flags/rpa.png" qs="none"/>
|
||||
<language display_name="Palestine" locale="TODO" wallet_name="English" flag="/lang/flags/palestine.png" qs="none"/>
|
||||
<language display_name="India" locale="hi_IN" wallet_name="English" flag="/lang/flags/india.png" qs="none"/>
|
||||
<language display_name="Italy" locale="it_IT" wallet_name="English" flag="/lang/flags/italy.png" qs="none"/>
|
||||
<language display_name="German" locale="de_DE" wallet_name="English" flag="/lang/flags/german.png" qs="none"/>
|
||||
<language display_name="China" locale="zh_CN" wallet_name="English" flag="/lang/flags/china.png" qs="none"/>
|
||||
<language display_name="Brazil" locale="pt_BR" wallet_name="English" flag="/lang/flags/brazil.png" qs="none"/>
|
||||
<language display_name="Bangladesh" locale="TODO" wallet_name="English" flag="/lang/flags/bangladesh.png" qs="none"/>
|
||||
|
||||
<!--
|
||||
List of available languages for your wallet's seed:
|
||||
0 : English
|
||||
1 : Spanish
|
||||
2 : German
|
||||
3 : Italian
|
||||
4 : Portuguese
|
||||
5 : Russian
|
||||
6 : Japanese
|
||||
-->
|
||||
<language display_name="US English" locale="en_US" wallet_language="English" flag="/lang/flags/usa.png" qs="none"/>
|
||||
<language display_name="UK English" locale="en_GB" wallet_language="English" flag="/lang/flags/uk.png" qs="none"/>
|
||||
<language display_name="Russia" locale="ru_RU" wallet_language="Russian" flag="/lang/flags/russia.png" qs="none"/>
|
||||
<language display_name="RPA" locale="en_SA" wallet_language="English" flag="/lang/flags/rpa.png" qs="none"/>
|
||||
<language display_name="Palestine" locale="ar_PS" wallet_language="English" flag="/lang/flags/palestine.png" qs="none"/>
|
||||
<language display_name="India" locale="hi_IN" wallet_language="English" flag="/lang/flags/india.png" qs="none"/>
|
||||
<language display_name="Italy" locale="it_IT" wallet_language="Italian" flag="/lang/flags/italy.png" qs="none"/>
|
||||
<language display_name="German" locale="de_DE" wallet_language="German" flag="/lang/flags/german.png" qs="none"/>
|
||||
<language display_name="China" locale="zh_CN" wallet_language="English" flag="/lang/flags/china.png" qs="none"/>
|
||||
<language display_name="Brazil" locale="pt_BR" wallet_language="Portuguese" flag="/lang/flags/brazil.png" qs="none"/>
|
||||
<language display_name="Bangladesh" locale="en_US" wallet_language="English" flag="/lang/flags/bangladesh.png" qs="none"/>
|
||||
</languages>
|
||||
|
Reference in new issue