QuasarAppLib/locales.h

110 lines
3.1 KiB
C
Raw Normal View History

2018-09-29 15:56:04 +03:00
/*
2022-12-28 00:45:09 +03:00
* Copyright (C) 2018-2023 QuasarApp.
2018-09-29 15:56:04 +03:00
* 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"
2020-05-16 15:46:41 +03:00
#include <QLocale>
2021-02-20 12:42:34 +03:00
#include <QSet>
2020-05-15 01:43:32 +03:00
#include <QString>
2022-04-26 20:55:50 +03:00
#include <QDir>
2020-05-15 01:43:32 +03:00
2018-09-29 15:56:04 +03:00
class QCoreApplication;
class QTranslator;
namespace QuasarAppUtils {
/**
* @brief The Locales class for parese local files
2021-04-26 12:01:08 +03:00
* **Example :**
2021-02-12 13:28:47 +03:00
* @code{cpp}
* QuasarAppUtils::Locales::init();
* @endcode
*
* @note If you want to add you own location of the qm files then add this into seccond arguments of the Locales::init method.
*
* @code{cpp}
* QuasarAppUtils::Locales::init(QLocale::system(), "myPath");
2021-02-12 13:28:47 +03:00
* @endcode
*
* @note All translations qm files should be named with lower case example : en.qm
2018-09-29 15:56:04 +03:00
*/
2020-05-16 15:46:41 +03:00
class QUASARAPPSHARED_EXPORT Locales : public QObject
2018-09-29 15:56:04 +03:00
{
2020-05-16 15:46:41 +03:00
Q_OBJECT
2018-09-29 15:56:04 +03:00
public:
/**
2021-02-12 12:39:46 +03:00
* @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.
2020-05-15 01:43:32 +03:00
*/
static bool setLocale(const QLocale &locale);
2020-05-16 15:46:41 +03:00
/**
2021-04-07 13:24:30 +03:00
* @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.
2020-05-16 15:46:41 +03:00
*/
static bool init(const QLocale &locale = QLocale::system(),
const QSet<QString> & location = {});
2021-05-05 15:44:21 +03:00
/**
* @brief addLocation This method add location for qm files. Use This method if you create a own library with translations supports.
* @param location This is a new location of the qm files.
*/
static void addLocation(const QString& location);
/**
* @brief instance This method return pointer to the Locales service.
* @return return pointer to the Locales static object
*/
static Locales *instance();
2020-05-16 15:46:41 +03:00
/**
* @brief currentLocate This method return current locate of applicatuon.
* @return current or last sets locate of applciation.
*/
static const QLocale &currentLocate();
2020-05-16 15:46:41 +03:00
signals:
/**
2021-04-07 13:24:30 +03:00
* @brief sigTranslationChanged Emited when set new locale for application.
2020-05-16 15:46:41 +03:00
*/
void sigTranslationChanged();
private:
Locales() = default;
2021-02-15 13:17:28 +03:00
~Locales();
2021-02-12 12:39:46 +03:00
bool setLocalePrivate(const QLocale &locale = QLocale::system());
2021-02-12 13:28:47 +03:00
bool initPrivate(const QLocale &locale = QLocale::system(),
2021-02-15 13:17:28 +03:00
const QSet<QString> &location = {});
void removeOldTranslation();
2021-05-05 15:44:21 +03:00
void addLocationPrivate(const QString& location);
2020-05-15 01:43:32 +03:00
const QLocale &currentLocatePrivate() const;
2022-04-26 20:55:50 +03:00
bool findQm(const QString &localePrefix,
QList<QTranslator *> &result);
bool findQmPrivate(const QString &prefix,
QList<QTranslator *> &qmFiles);
2022-04-26 20:55:50 +03:00
QLocale _currentLocate;
2021-02-15 13:17:28 +03:00
QSet<QString> _locations;
QList<QTranslator *> _translations;
2018-09-29 15:56:04 +03:00
};
}
#endif // LOCALES_H