File indexing completed on 2024-04-28 11:40:01

0001 /*
0002     SPDX-FileCopyrightText: 2011 Marco Martin <mart@kde.org>
0003     SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef KLOCALIZEDCONTEXT_H
0009 #define KLOCALIZEDCONTEXT_H
0010 
0011 #include <QObject>
0012 #include <QVariant>
0013 #include <ki18n_export.h>
0014 #include <memory>
0015 
0016 /**
0017  * @class KLocalizedContext klocalizedcontext.h <KLocalizedContext>
0018  *
0019  * This class is meant to be used to simplify integration of the KI18n framework
0020  * in QML.
0021  *
0022  * The way to do so, is by creating this object and setting it as a context
0023  * object:
0024  *
0025  * @code
0026  * QQuickView* view = new QQuickView;
0027  * view.engine()->rootContext()->setContextObject(new KLocalizedContext(view));
0028  * @endcode
0029  *
0030  * Then i18n*() and xi18n*() functions should be available for use from the code
0031  * loaded in the engine, for the view.
0032  *
0033  * @note Plural functions differ from the C/C++ version. On QML/JS we can get a
0034  * real value easily. To solve warnings on those cases we'll cast the first argument
0035  * to make sure it's taken into account for the plural.
0036  *
0037  * @since 5.17
0038  */
0039 
0040 class KI18N_EXPORT KLocalizedContext : public QObject
0041 {
0042     Q_OBJECT
0043 
0044     /**
0045      * This property only needs to be specified if the context is being run on a library.
0046      * in an application there is no need to set the translation domain as the application's
0047      * domain can be used.
0048      */
0049     Q_PROPERTY(QString translationDomain READ translationDomain WRITE setTranslationDomain NOTIFY translationDomainChanged)
0050 
0051 public:
0052     explicit KLocalizedContext(QObject *parent = nullptr);
0053     ~KLocalizedContext() override;
0054 
0055     QString translationDomain() const;
0056     void setTranslationDomain(const QString &domain);
0057 
0058     Q_INVOKABLE QString i18n(const QString &message,
0059                              const QVariant &p1 = QVariant(),
0060                              const QVariant &p2 = QVariant(),
0061                              const QVariant &p3 = QVariant(),
0062                              const QVariant &p4 = QVariant(),
0063                              const QVariant &p5 = QVariant(),
0064                              const QVariant &p6 = QVariant(),
0065                              const QVariant &p7 = QVariant(),
0066                              const QVariant &p8 = QVariant(),
0067                              const QVariant &p9 = QVariant(),
0068                              const QVariant &p10 = QVariant()) const;
0069 
0070     Q_INVOKABLE QString i18nc(const QString &context,
0071                               const QString &message,
0072                               const QVariant &p1 = QVariant(),
0073                               const QVariant &p2 = QVariant(),
0074                               const QVariant &p3 = QVariant(),
0075                               const QVariant &p4 = QVariant(),
0076                               const QVariant &p5 = QVariant(),
0077                               const QVariant &p6 = QVariant(),
0078                               const QVariant &p7 = QVariant(),
0079                               const QVariant &p8 = QVariant(),
0080                               const QVariant &p9 = QVariant(),
0081                               const QVariant &p10 = QVariant()) const;
0082 
0083     Q_INVOKABLE QString i18np(const QString &singular,
0084                               const QString &plural,
0085                               const QVariant &p1 = QVariant(),
0086                               const QVariant &p2 = QVariant(),
0087                               const QVariant &p3 = QVariant(),
0088                               const QVariant &p4 = QVariant(),
0089                               const QVariant &p5 = QVariant(),
0090                               const QVariant &p6 = QVariant(),
0091                               const QVariant &p7 = QVariant(),
0092                               const QVariant &p8 = QVariant(),
0093                               const QVariant &p9 = QVariant(),
0094                               const QVariant &p10 = QVariant()) const;
0095 
0096     Q_INVOKABLE QString i18ncp(const QString &context,
0097                                const QString &singular,
0098                                const QString &plural,
0099                                const QVariant &p1 = QVariant(),
0100                                const QVariant &p2 = QVariant(),
0101                                const QVariant &p3 = QVariant(),
0102                                const QVariant &p4 = QVariant(),
0103                                const QVariant &p5 = QVariant(),
0104                                const QVariant &p6 = QVariant(),
0105                                const QVariant &p7 = QVariant(),
0106                                const QVariant &p8 = QVariant(),
0107                                const QVariant &p9 = QVariant(),
0108                                const QVariant &p10 = QVariant()) const;
0109 
0110     Q_INVOKABLE QString i18nd(const QString &domain,
0111                               const QString &message,
0112                               const QVariant &p1 = QVariant(),
0113                               const QVariant &p2 = QVariant(),
0114                               const QVariant &p3 = QVariant(),
0115                               const QVariant &p4 = QVariant(),
0116                               const QVariant &p5 = QVariant(),
0117                               const QVariant &p6 = QVariant(),
0118                               const QVariant &p7 = QVariant(),
0119                               const QVariant &p8 = QVariant(),
0120                               const QVariant &p9 = QVariant(),
0121                               const QVariant &p10 = QVariant()) const;
0122 
0123     Q_INVOKABLE QString i18ndc(const QString &domain,
0124                                const QString &context,
0125                                const QString &message,
0126                                const QVariant &p1 = QVariant(),
0127                                const QVariant &p2 = QVariant(),
0128                                const QVariant &p3 = QVariant(),
0129                                const QVariant &p4 = QVariant(),
0130                                const QVariant &p5 = QVariant(),
0131                                const QVariant &p6 = QVariant(),
0132                                const QVariant &p7 = QVariant(),
0133                                const QVariant &p8 = QVariant(),
0134                                const QVariant &p9 = QVariant(),
0135                                const QVariant &p10 = QVariant()) const;
0136 
0137     Q_INVOKABLE QString i18ndp(const QString &domain,
0138                                const QString &singular,
0139                                const QString &plural,
0140                                const QVariant &p1 = QVariant(),
0141                                const QVariant &p2 = QVariant(),
0142                                const QVariant &p3 = QVariant(),
0143                                const QVariant &p4 = QVariant(),
0144                                const QVariant &p5 = QVariant(),
0145                                const QVariant &p6 = QVariant(),
0146                                const QVariant &p7 = QVariant(),
0147                                const QVariant &p8 = QVariant(),
0148                                const QVariant &p9 = QVariant(),
0149                                const QVariant &p10 = QVariant()) const;
0150 
0151     Q_INVOKABLE QString i18ndcp(const QString &domain,
0152                                 const QString &context,
0153                                 const QString &singular,
0154                                 const QString &plural,
0155                                 const QVariant &p1 = QVariant(),
0156                                 const QVariant &p2 = QVariant(),
0157                                 const QVariant &p3 = QVariant(),
0158                                 const QVariant &p4 = QVariant(),
0159                                 const QVariant &p5 = QVariant(),
0160                                 const QVariant &p6 = QVariant(),
0161                                 const QVariant &p7 = QVariant(),
0162                                 const QVariant &p8 = QVariant(),
0163                                 const QVariant &p9 = QVariant(),
0164                                 const QVariant &p10 = QVariant()) const;
0165 
0166     Q_INVOKABLE QString xi18n(const QString &message,
0167                               const QVariant &p1 = QVariant(),
0168                               const QVariant &p2 = QVariant(),
0169                               const QVariant &p3 = QVariant(),
0170                               const QVariant &p4 = QVariant(),
0171                               const QVariant &p5 = QVariant(),
0172                               const QVariant &p6 = QVariant(),
0173                               const QVariant &p7 = QVariant(),
0174                               const QVariant &p8 = QVariant(),
0175                               const QVariant &p9 = QVariant(),
0176                               const QVariant &p10 = QVariant()) const;
0177 
0178     Q_INVOKABLE QString xi18nc(const QString &context,
0179                                const QString &message,
0180                                const QVariant &p1 = QVariant(),
0181                                const QVariant &p2 = QVariant(),
0182                                const QVariant &p3 = QVariant(),
0183                                const QVariant &p4 = QVariant(),
0184                                const QVariant &p5 = QVariant(),
0185                                const QVariant &p6 = QVariant(),
0186                                const QVariant &p7 = QVariant(),
0187                                const QVariant &p8 = QVariant(),
0188                                const QVariant &p9 = QVariant(),
0189                                const QVariant &p10 = QVariant()) const;
0190 
0191     Q_INVOKABLE QString xi18np(const QString &singular,
0192                                const QString &plural,
0193                                const QVariant &p1 = QVariant(),
0194                                const QVariant &p2 = QVariant(),
0195                                const QVariant &p3 = QVariant(),
0196                                const QVariant &p4 = QVariant(),
0197                                const QVariant &p5 = QVariant(),
0198                                const QVariant &p6 = QVariant(),
0199                                const QVariant &p7 = QVariant(),
0200                                const QVariant &p8 = QVariant(),
0201                                const QVariant &p9 = QVariant(),
0202                                const QVariant &p10 = QVariant()) const;
0203 
0204     Q_INVOKABLE QString xi18ncp(const QString &context,
0205                                 const QString &singular,
0206                                 const QString &plural,
0207                                 const QVariant &p1 = QVariant(),
0208                                 const QVariant &p2 = QVariant(),
0209                                 const QVariant &p3 = QVariant(),
0210                                 const QVariant &p4 = QVariant(),
0211                                 const QVariant &p5 = QVariant(),
0212                                 const QVariant &p6 = QVariant(),
0213                                 const QVariant &p7 = QVariant(),
0214                                 const QVariant &p8 = QVariant(),
0215                                 const QVariant &p9 = QVariant(),
0216                                 const QVariant &p10 = QVariant()) const;
0217 
0218     Q_INVOKABLE QString xi18nd(const QString &domain,
0219                                const QString &message,
0220                                const QVariant &p1 = QVariant(),
0221                                const QVariant &p2 = QVariant(),
0222                                const QVariant &p3 = QVariant(),
0223                                const QVariant &p4 = QVariant(),
0224                                const QVariant &p5 = QVariant(),
0225                                const QVariant &p6 = QVariant(),
0226                                const QVariant &p7 = QVariant(),
0227                                const QVariant &p8 = QVariant(),
0228                                const QVariant &p9 = QVariant(),
0229                                const QVariant &p10 = QVariant()) const;
0230 
0231     Q_INVOKABLE QString xi18ndc(const QString &domain,
0232                                 const QString &context,
0233                                 const QString &message,
0234                                 const QVariant &p1 = QVariant(),
0235                                 const QVariant &p2 = QVariant(),
0236                                 const QVariant &p3 = QVariant(),
0237                                 const QVariant &p4 = QVariant(),
0238                                 const QVariant &p5 = QVariant(),
0239                                 const QVariant &p6 = QVariant(),
0240                                 const QVariant &p7 = QVariant(),
0241                                 const QVariant &p8 = QVariant(),
0242                                 const QVariant &p9 = QVariant(),
0243                                 const QVariant &p10 = QVariant()) const;
0244 
0245     Q_INVOKABLE QString xi18ndp(const QString &domain,
0246                                 const QString &singular,
0247                                 const QString &plural,
0248                                 const QVariant &p1 = QVariant(),
0249                                 const QVariant &p2 = QVariant(),
0250                                 const QVariant &p3 = QVariant(),
0251                                 const QVariant &p4 = QVariant(),
0252                                 const QVariant &p5 = QVariant(),
0253                                 const QVariant &p6 = QVariant(),
0254                                 const QVariant &p7 = QVariant(),
0255                                 const QVariant &p8 = QVariant(),
0256                                 const QVariant &p9 = QVariant(),
0257                                 const QVariant &p10 = QVariant()) const;
0258 
0259     Q_INVOKABLE QString xi18ndcp(const QString &domain,
0260                                  const QString &context,
0261                                  const QString &singular,
0262                                  const QString &plural,
0263                                  const QVariant &p1 = QVariant(),
0264                                  const QVariant &p2 = QVariant(),
0265                                  const QVariant &p3 = QVariant(),
0266                                  const QVariant &p4 = QVariant(),
0267                                  const QVariant &p5 = QVariant(),
0268                                  const QVariant &p6 = QVariant(),
0269                                  const QVariant &p7 = QVariant(),
0270                                  const QVariant &p8 = QVariant(),
0271                                  const QVariant &p9 = QVariant(),
0272                                  const QVariant &p10 = QVariant()) const;
0273 
0274 Q_SIGNALS:
0275     void translationDomainChanged(const QString &translationDomain);
0276 
0277 private:
0278     std::unique_ptr<class KLocalizedContextPrivate> const d_ptr;
0279     Q_DECLARE_PRIVATE(KLocalizedContext)
0280 };
0281 
0282 #endif