language_manager.h 893 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef LANGUAGE_MANAGER_H
  2. #define LANGUAGE_MANAGER_H
  3. #include <QObject>
  4. #include <QTranslator>
  5. class LanguageManager : public QObject {
  6. Q_OBJECT
  7. Q_PROPERTY(QString currentLanguage READ currentLanguage WRITE setLanguage
  8. NOTIFY languageChanged)
  9. Q_PROPERTY(QStringList availableLanguages READ availableLanguages CONSTANT)
  10. public:
  11. explicit LanguageManager(QObject *parent = nullptr);
  12. ~LanguageManager() override;
  13. [[nodiscard]] QString currentLanguage() const;
  14. [[nodiscard]] QStringList availableLanguages() const;
  15. Q_INVOKABLE void setLanguage(const QString &language);
  16. Q_INVOKABLE [[nodiscard]] static QString
  17. languageDisplayName(const QString &language);
  18. signals:
  19. void languageChanged();
  20. private:
  21. QString m_currentLanguage;
  22. QTranslator *m_translator;
  23. QStringList m_availableLanguages;
  24. void loadLanguage(const QString &language);
  25. };
  26. #endif