File indexing completed on 2024-04-28 07:43: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