File indexing completed on 2025-02-09 04:28:39
0001 /* 0002 This file is part of the KTextTemplate library 0003 0004 SPDX-FileCopyrightText: 2010 Stephen Kelly <steveire@gmail.com> 0005 0006 SPDX-License-Identifier: LGPL-2.1-or-later 0007 0008 */ 0009 0010 #ifndef KTEXTTEMPLATE_QTLOCALIZER_P_H 0011 #define KTEXTTEMPLATE_QTLOCALIZER_P_H 0012 0013 #include "abstractlocalizer.h" 0014 0015 class QTranslator; 0016 0017 namespace KTextTemplate 0018 { 0019 0020 class QtLocalizerPrivate; 0021 0022 /// @headerfile qtlocalizer.h <KTextTemplate/QtLocalizer> 0023 0024 /** 0025 @brief Provides internationalization based on QLocale and QTranslator. 0026 0027 This class implements access to the %Qt Localization system. Localizable 0028 types such as strings, numbers, dates and times can be processed. 0029 0030 @code 0031 auto t = m_engine->loadTemplate(someTemplate); 0032 auto c = getContext(); 0033 0034 // Render with the German locale 0035 c.setLocalizer(m_de_Localizer); 0036 auto deText = t->render(&c); 0037 de_display->setText(deText); 0038 0039 // Render with the French locale 0040 c.setLocalizer(m_fr_Localizer); 0041 auto frText = t->render(&c); 0042 fr_display->setText(frText); 0043 @endcode 0044 0045 */ 0046 class KTEXTTEMPLATE_EXPORT QtLocalizer : public AbstractLocalizer 0047 { 0048 public: 0049 /** 0050 Constructs a new **%QtLocalizer** using the @p locale 0051 */ 0052 QtLocalizer(const QLocale &locale = QLocale::system()); 0053 0054 /** 0055 Destructor 0056 */ 0057 ~QtLocalizer() override; 0058 0059 /** 0060 Set the path to look for translations of the application strings. 0061 */ 0062 void setAppTranslatorPath(const QString &path); 0063 0064 /** 0065 Set the prefix of translation files. For example, if the German translation 0066 file is called <tt>myapp_de_DE.qm</tt>, the prefix should be set to 0067 <tt>myapp_</tt>. 0068 */ 0069 void setAppTranslatorPrefix(const QString &prefix); 0070 0071 /** 0072 Install a @p translator to use for a particular @p localeName. 0073 0074 @code 0075 auto deTranslator = new QTranslator(this); 0076 auto loaded = deTranslator->load("myapp_de_DE"); 0077 if (!loaded) 0078 return; 0079 0080 de_localizer->installTranslator(deTranslator, "de_DE"); 0081 @endcode 0082 */ 0083 void installTranslator(QTranslator *translator, const QString &localeName = QLocale::system().name()); 0084 0085 QString currentLocale() const override; 0086 void pushLocale(const QString &localeName) override; 0087 void popLocale() override; 0088 void loadCatalog(const QString &path, const QString &catalog) override; 0089 void unloadCatalog(const QString &catalog) override; 0090 0091 QString localizeNumber(int number) const override; 0092 QString localizeNumber(qreal number) const override; 0093 QString localizeMonetaryValue(qreal value, const QString ¤cyCode = {}) const override; 0094 QString localizeDate(const QDate &date, QLocale::FormatType formatType = QLocale::ShortFormat) const override; 0095 QString localizeTime(const QTime &time, QLocale::FormatType formatType = QLocale::ShortFormat) const override; 0096 QString localizeDateTime(const QDateTime &dateTime, QLocale::FormatType formatType = QLocale::ShortFormat) const override; 0097 QString localizeString(const QString &string, const QVariantList &arguments = {}) const override; 0098 QString localizeContextString(const QString &string, const QString &context, const QVariantList &arguments = {}) const override; 0099 QString 0100 localizePluralContextString(const QString &string, const QString &pluralForm, const QString &context, const QVariantList &arguments = {}) const override; 0101 QString localizePluralString(const QString &string, const QString &pluralForm, const QVariantList &arguments = {}) const override; 0102 0103 private: 0104 Q_DECLARE_PRIVATE(QtLocalizer) 0105 Q_DISABLE_COPY(QtLocalizer) 0106 QtLocalizerPrivate *const d_ptr; 0107 }; 0108 } 0109 0110 #endif