54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#ifndef TRANSLATOR_H
|
|
#define TRANSLATOR_H
|
|
|
|
#include <QObject>
|
|
#include <QMap>
|
|
|
|
class QQmlEngine;
|
|
class QTranslator;
|
|
|
|
class Translator : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(Language currentLanguage READ currentLanguage WRITE setCurrentLanguage NOTIFY currentLanguageChanged)
|
|
Q_PROPERTY(QString currentLanguageName READ currentLanguageName NOTIFY currentLanguageNameChanged)
|
|
Q_PROPERTY(QString currentLanguageIcon READ currentLanguageIcon NOTIFY currentLanguageNameChanged)
|
|
|
|
public:
|
|
enum class Language {
|
|
English,
|
|
Russian,
|
|
Italian
|
|
};
|
|
Q_ENUM(Language)
|
|
|
|
explicit Translator(QQmlEngine* engine, QObject *parent = nullptr);
|
|
|
|
public slots:
|
|
QString languageName(Language language) const;
|
|
QString languageIcon(Language language) const;
|
|
|
|
public:
|
|
Language currentLanguage() const;
|
|
void setCurrentLanguage(Language language);
|
|
|
|
QString currentLanguageName() const;
|
|
QString currentLanguageIcon() const;
|
|
|
|
signals:
|
|
void currentLanguageChanged();
|
|
void currentLanguageNameChanged();
|
|
void currentLanguageIconChanged();
|
|
|
|
private:
|
|
Language mCurrentLanguage = Language::English;
|
|
QQmlEngine* mQmlEngine = nullptr;
|
|
QTranslator* mCurrentTranslator = nullptr;
|
|
QMap<Language, QString> mNamesMap;
|
|
QMap<Language, QString> mIconsMap;
|
|
QMap<Language, QString> mTranslationsMap;
|
|
};
|
|
|
|
#endif // TRANSLATOR_H
|