/* This file is part of the KTextTemplate library SPDX-FileCopyrightText: 2010 Stephen Kelly SPDX-License-Identifier: LGPL-2.1-or-later */ #ifndef KTEXTTEMPLATE_QTLOCALIZER_P_H #define KTEXTTEMPLATE_QTLOCALIZER_P_H #include "abstractlocalizer.h" class QTranslator; namespace KTextTemplate { class QtLocalizerPrivate; /*! \class KTextTemplate::QtLocalizer \inheaderfile KTextTemplate/QtLocalizer \inmodule KTextTemplate \brief Provides internationalization based on QLocale and QTranslator. This class implements access to the %Qt Localization system. Localizable types such as strings, numbers, dates and times can be processed. \code auto t = m_engine->loadTemplate(someTemplate); auto c = getContext(); // Render with the German locale c.setLocalizer(m_de_Localizer); auto deText = t->render(&c); de_display->setText(deText); // Render with the French locale c.setLocalizer(m_fr_Localizer); auto frText = t->render(&c); fr_display->setText(frText); \endcode */ class KTEXTTEMPLATE_EXPORT QtLocalizer : public AbstractLocalizer { public: /*! Constructs a new QtLocalizer using the \a locale */ QtLocalizer(const QLocale &locale = QLocale::system()); ~QtLocalizer() override; /*! Set the path to look for translations of the application strings. */ void setAppTranslatorPath(const QString &path); /*! Set the prefix of translation files. For example, if the German translation file is called myapp_de_DE.qm, the prefix should be set to myapp_. */ void setAppTranslatorPrefix(const QString &prefix); /*! Install a \a translator to use for a particular \a localeName. \code auto deTranslator = new QTranslator(this); auto loaded = deTranslator->load("myapp_de_DE"); if (!loaded) return; de_localizer->installTranslator(deTranslator, "de_DE"); \endcode */ void installTranslator(QTranslator *translator, const QString &localeName = QLocale::system().name()); QString currentLocale() const override; void pushLocale(const QString &localeName) override; void popLocale() override; void loadCatalog(const QString &path, const QString &catalog) override; void unloadCatalog(const QString &catalog) override; QString localizeNumber(int number) const override; QString localizeNumber(qreal number) const override; QString localizeMonetaryValue(qreal value, const QString ¤cyCode = {}) const override; QString localizeDate(const QDate &date, QLocale::FormatType formatType = QLocale::ShortFormat) const override; QString localizeTime(const QTime &time, QLocale::FormatType formatType = QLocale::ShortFormat) const override; QString localizeDateTime(const QDateTime &dateTime, QLocale::FormatType formatType = QLocale::ShortFormat) const override; QString localizeString(const QString &string, const QVariantList &arguments = {}) const override; QString localizeContextString(const QString &string, const QString &context, const QVariantList &arguments = {}) const override; QString localizePluralContextString(const QString &string, const QString &pluralForm, const QString &context, const QVariantList &arguments = {}) const override; QString localizePluralString(const QString &string, const QString &pluralForm, const QVariantList &arguments = {}) const override; private: Q_DECLARE_PRIVATE(QtLocalizer) Q_DISABLE_COPY(QtLocalizer) QtLocalizerPrivate *const d_ptr; }; } #endif