File indexing completed on 2024-05-12 05:15:01

0001 /*
0002  * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #pragma once
0009 #include <KTextTemplate/QtLocalizer>
0010 #include <QObject>
0011 
0012 #include <QLocale>
0013 
0014 class KLocalizedString;
0015 class GrantleeKi18nLocalizer : public KTextTemplate::QtLocalizer
0016 {
0017 public:
0018     explicit GrantleeKi18nLocalizer();
0019     ~GrantleeKi18nLocalizer() override;
0020 
0021     // Only reimplement string localization to use KLocalizedString instead of
0022     // tr(), the remaining methods use QLocale internally, so we can reuse them
0023     [[nodiscard]] QString localizeContextString(const QString &string, const QString &context, const QVariantList &arguments) const override;
0024     [[nodiscard]] QString localizeString(const QString &string, const QVariantList &arguments) const override;
0025     [[nodiscard]] QString
0026     localizePluralContextString(const QString &string, const QString &pluralForm, const QString &context, const QVariantList &arguments) const override;
0027     [[nodiscard]] QString localizePluralString(const QString &string, const QString &pluralForm, const QVariantList &arguments) const override;
0028 
0029     // Only exception, Grantlee's implementation is not using QLocale for this
0030     // for some reason
0031     [[nodiscard]] QString localizeMonetaryValue(qreal value, const QString &currenctCode) const override;
0032 
0033 private:
0034     [[nodiscard]] QString processArguments(const KLocalizedString &str, const QVariantList &arguments) const;
0035 };