/* * Copyright (C) 2018-2021 QuasarApp. * Distributed under the lgplv3 software license, see the accompanying * Everyone is permitted to copy and distribute verbatim copies * of this license document, but changing it is not allowed. */ #ifndef LOCALES_H #define LOCALES_H #include "quasarapp_global.h" #include <QLocale> #include <QString> class QCoreApplication; class QTranslator; namespace QuasarAppUtils { /** * @brief The Locales class for parese local files * Example : * @code{cpp} * QuasarAppUtils::Locales::init() * @endcode */ class QUASARAPPSHARED_EXPORT Locales : public QObject { Q_OBJECT public: /** * @brief setLocale This method sets locale for application and loaded all translations for this locale. * @param locale This is new locale. * @return true if the all ltranstations files loaded successful. */ static bool setLocale(const QLocale &locale); /** * @brief init This method initialize translation of applictaion * @param locale - see info about QLocale * @param location - path to folder with qm files. example (:/tr) * @return return true if locale set for application */ static bool init(const QLocale &locale = QLocale::system(), const QSet<QString> & location = {}); /** * @brief instance * @return return static object */ static Locales *instance(); signals: /** * @brief sigTranslationChanged - emited when set new locale for application. */ void sigTranslationChanged(); private: Locales() = default; ~Locales(); bool setLocalePrivate(const QLocale &locale = QLocale::system()); bool initPrivate(const QLocale &locale = QLocale::system(), const QSet<QString> &location = {}); void removeOldTranslation(); QSet<QString> _locations; QList<QTranslator *> _translations; }; } #endif // LOCALES_H