#ifndef TRANSLATOR_H #define TRANSLATOR_H #include #include 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; QTranslator* mCurrentQtTranslator = nullptr; QTranslator* mCurrentQtBaseTranslator = nullptr; QTranslator* mCurrentQtSerialTranslator = nullptr; QMap mNamesMap; QMap mIconsMap; QMap mTranslationsMap; QMap mQtTranslationsMap; QMap mQtBaseTranslationsMap; QMap mQtSerialTranslationsMap; }; #endif // TRANSLATOR_H