1/*
2 SPDX-FileCopyrightText: 2011 Marco Martin <mart@kde.org>
3 SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KLOCALIZEDCONTEXT_H
9#define KLOCALIZEDCONTEXT_H
10
11#include <ki18n_export.h>
12
13#if KI18N_ENABLE_DEPRECATED_SINCE(6, 8)
14#include <QObject>
15#include <QVariant>
16
17/*!
18 * \class KLocalizedContext
19 * \inmodule KI18n
20 *
21 * \brief This class is meant to be used to simplify integration of the KI18n framework
22 * in QML.
23 *
24 * The way to do so, is by creating this object and setting it as a context
25 * object:
26 *
27 * \code
28 * QQuickView* view = new QQuickView;
29 * view.engine()->rootContext()->setContextObject(new KLocalizedContext(view));
30 * \endcode
31 *
32 * Then i18n*() and xi18n*() functions should be available for use from the code
33 * loaded in the engine, for the view.
34 *
35 * \note Plural functions differ from the C/C++ version. On QML/JS we can get a
36 * real value easily. To solve warnings on those cases we'll cast the first argument
37 * to make sure it's taken into account for the plural.
38 *
39 * \since 5.17
40 * \deprecated[6.8]
41 *
42 * Use KLocalizedQmlContext or KLocalization::setupLocalizedContext
43 * instead.
44 */
45KI18N_DEPRECATED_VERSION(6, 8, "use KLocalizedQmlContext or KLocalization::setupLocalizedContext() from KF6::I18nQml instead")
46class KI18N_EXPORT KLocalizedContext : public QObject
47{
48 Q_OBJECT
49
50 /*!
51 * \property KLocalizedContext::translationDomain
52 *
53 * This property only needs to be specified if the context is being run on a library.
54 * in an application there is no need to set the translation domain as the application's
55 * domain can be used.
56 */
57 Q_PROPERTY(QString translationDomain READ translationDomain WRITE setTranslationDomain NOTIFY translationDomainChanged)
58
59public:
60 /*!
61 *
62 */
63 explicit KLocalizedContext(QObject *parent = nullptr);
64 ~KLocalizedContext() override;
65
66 /*!
67 *
68 */
69 QString translationDomain() const;
70
71 /*!
72 *
73 */
74 void setTranslationDomain(const QString &domain);
75
76 Q_INVOKABLE QString i18n(const QString &message,
77 const QVariant &param1 = QVariant(),
78 const QVariant &param2 = QVariant(),
79 const QVariant &param3 = QVariant(),
80 const QVariant &param4 = QVariant(),
81 const QVariant &param5 = QVariant(),
82 const QVariant &param6 = QVariant(),
83 const QVariant &param7 = QVariant(),
84 const QVariant &param8 = QVariant(),
85 const QVariant &param9 = QVariant(),
86 const QVariant &param10 = QVariant()) const;
87
88 Q_INVOKABLE QString i18nc(const QString &context,
89 const QString &message,
90 const QVariant &param1 = QVariant(),
91 const QVariant &param2 = QVariant(),
92 const QVariant &param3 = QVariant(),
93 const QVariant &param4 = QVariant(),
94 const QVariant &param5 = QVariant(),
95 const QVariant &param6 = QVariant(),
96 const QVariant &param7 = QVariant(),
97 const QVariant &param8 = QVariant(),
98 const QVariant &param9 = QVariant(),
99 const QVariant &param10 = QVariant()) const;
100
101 Q_INVOKABLE QString i18np(const QString &singular,
102 const QString &plural,
103 const QVariant &param1 = QVariant(),
104 const QVariant &param2 = QVariant(),
105 const QVariant &param3 = QVariant(),
106 const QVariant &param4 = QVariant(),
107 const QVariant &param5 = QVariant(),
108 const QVariant &param6 = QVariant(),
109 const QVariant &param7 = QVariant(),
110 const QVariant &param8 = QVariant(),
111 const QVariant &param9 = QVariant(),
112 const QVariant &param10 = QVariant()) const;
113
114 Q_INVOKABLE QString i18ncp(const QString &context,
115 const QString &singular,
116 const QString &plural,
117 const QVariant &param1 = QVariant(),
118 const QVariant &param2 = QVariant(),
119 const QVariant &param3 = QVariant(),
120 const QVariant &param4 = QVariant(),
121 const QVariant &param5 = QVariant(),
122 const QVariant &param6 = QVariant(),
123 const QVariant &param7 = QVariant(),
124 const QVariant &param8 = QVariant(),
125 const QVariant &param9 = QVariant(),
126 const QVariant &param10 = QVariant()) const;
127
128 Q_INVOKABLE QString i18nd(const QString &domain,
129 const QString &message,
130 const QVariant &param1 = QVariant(),
131 const QVariant &param2 = QVariant(),
132 const QVariant &param3 = QVariant(),
133 const QVariant &param4 = QVariant(),
134 const QVariant &param5 = QVariant(),
135 const QVariant &param6 = QVariant(),
136 const QVariant &param7 = QVariant(),
137 const QVariant &param8 = QVariant(),
138 const QVariant &param9 = QVariant(),
139 const QVariant &param10 = QVariant()) const;
140
141 Q_INVOKABLE QString i18ndc(const QString &domain,
142 const QString &context,
143 const QString &message,
144 const QVariant &param1 = QVariant(),
145 const QVariant &param2 = QVariant(),
146 const QVariant &param3 = QVariant(),
147 const QVariant &param4 = QVariant(),
148 const QVariant &param5 = QVariant(),
149 const QVariant &param6 = QVariant(),
150 const QVariant &param7 = QVariant(),
151 const QVariant &param8 = QVariant(),
152 const QVariant &param9 = QVariant(),
153 const QVariant &param10 = QVariant()) const;
154
155 Q_INVOKABLE QString i18ndp(const QString &domain,
156 const QString &singular,
157 const QString &plural,
158 const QVariant &param1 = QVariant(),
159 const QVariant &param2 = QVariant(),
160 const QVariant &param3 = QVariant(),
161 const QVariant &param4 = QVariant(),
162 const QVariant &param5 = QVariant(),
163 const QVariant &param6 = QVariant(),
164 const QVariant &param7 = QVariant(),
165 const QVariant &param8 = QVariant(),
166 const QVariant &param9 = QVariant(),
167 const QVariant &param10 = QVariant()) const;
168
169 Q_INVOKABLE QString i18ndcp(const QString &domain,
170 const QString &context,
171 const QString &singular,
172 const QString &plural,
173 const QVariant &param1 = QVariant(),
174 const QVariant &param2 = QVariant(),
175 const QVariant &param3 = QVariant(),
176 const QVariant &param4 = QVariant(),
177 const QVariant &param5 = QVariant(),
178 const QVariant &param6 = QVariant(),
179 const QVariant &param7 = QVariant(),
180 const QVariant &param8 = QVariant(),
181 const QVariant &param9 = QVariant(),
182 const QVariant &param10 = QVariant()) const;
183
184 Q_INVOKABLE QString xi18n(const QString &message,
185 const QVariant &param1 = QVariant(),
186 const QVariant &param2 = QVariant(),
187 const QVariant &param3 = QVariant(),
188 const QVariant &param4 = QVariant(),
189 const QVariant &param5 = QVariant(),
190 const QVariant &param6 = QVariant(),
191 const QVariant &param7 = QVariant(),
192 const QVariant &param8 = QVariant(),
193 const QVariant &param9 = QVariant(),
194 const QVariant &param10 = QVariant()) const;
195
196 Q_INVOKABLE QString xi18nc(const QString &context,
197 const QString &message,
198 const QVariant &param1 = QVariant(),
199 const QVariant &param2 = QVariant(),
200 const QVariant &param3 = QVariant(),
201 const QVariant &param4 = QVariant(),
202 const QVariant &param5 = QVariant(),
203 const QVariant &param6 = QVariant(),
204 const QVariant &param7 = QVariant(),
205 const QVariant &param8 = QVariant(),
206 const QVariant &param9 = QVariant(),
207 const QVariant &param10 = QVariant()) const;
208
209 Q_INVOKABLE QString xi18np(const QString &singular,
210 const QString &plural,
211 const QVariant &param1 = QVariant(),
212 const QVariant &param2 = QVariant(),
213 const QVariant &param3 = QVariant(),
214 const QVariant &param4 = QVariant(),
215 const QVariant &param5 = QVariant(),
216 const QVariant &param6 = QVariant(),
217 const QVariant &param7 = QVariant(),
218 const QVariant &param8 = QVariant(),
219 const QVariant &param9 = QVariant(),
220 const QVariant &param10 = QVariant()) const;
221
222 Q_INVOKABLE QString xi18ncp(const QString &context,
223 const QString &singular,
224 const QString &plural,
225 const QVariant &param1 = QVariant(),
226 const QVariant &param2 = QVariant(),
227 const QVariant &param3 = QVariant(),
228 const QVariant &param4 = QVariant(),
229 const QVariant &param5 = QVariant(),
230 const QVariant &param6 = QVariant(),
231 const QVariant &param7 = QVariant(),
232 const QVariant &param8 = QVariant(),
233 const QVariant &param9 = QVariant(),
234 const QVariant &param10 = QVariant()) const;
235
236 Q_INVOKABLE QString xi18nd(const QString &domain,
237 const QString &message,
238 const QVariant &param1 = QVariant(),
239 const QVariant &param2 = QVariant(),
240 const QVariant &param3 = QVariant(),
241 const QVariant &param4 = QVariant(),
242 const QVariant &param5 = QVariant(),
243 const QVariant &param6 = QVariant(),
244 const QVariant &param7 = QVariant(),
245 const QVariant &param8 = QVariant(),
246 const QVariant &param9 = QVariant(),
247 const QVariant &param10 = QVariant()) const;
248
249 Q_INVOKABLE QString xi18ndc(const QString &domain,
250 const QString &context,
251 const QString &message,
252 const QVariant &param1 = QVariant(),
253 const QVariant &param2 = QVariant(),
254 const QVariant &param3 = QVariant(),
255 const QVariant &param4 = QVariant(),
256 const QVariant &param5 = QVariant(),
257 const QVariant &param6 = QVariant(),
258 const QVariant &param7 = QVariant(),
259 const QVariant &param8 = QVariant(),
260 const QVariant &param9 = QVariant(),
261 const QVariant &param10 = QVariant()) const;
262
263 Q_INVOKABLE QString xi18ndp(const QString &domain,
264 const QString &singular,
265 const QString &plural,
266 const QVariant &param1 = QVariant(),
267 const QVariant &param2 = QVariant(),
268 const QVariant &param3 = QVariant(),
269 const QVariant &param4 = QVariant(),
270 const QVariant &param5 = QVariant(),
271 const QVariant &param6 = QVariant(),
272 const QVariant &param7 = QVariant(),
273 const QVariant &param8 = QVariant(),
274 const QVariant &param9 = QVariant(),
275 const QVariant &param10 = QVariant()) const;
276
277 Q_INVOKABLE QString xi18ndcp(const QString &domain,
278 const QString &context,
279 const QString &singular,
280 const QString &plural,
281 const QVariant &param1 = QVariant(),
282 const QVariant &param2 = QVariant(),
283 const QVariant &param3 = QVariant(),
284 const QVariant &param4 = QVariant(),
285 const QVariant &param5 = QVariant(),
286 const QVariant &param6 = QVariant(),
287 const QVariant &param7 = QVariant(),
288 const QVariant &param8 = QVariant(),
289 const QVariant &param9 = QVariant(),
290 const QVariant &param10 = QVariant()) const;
291
292Q_SIGNALS:
293 void translationDomainChanged(const QString &translationDomain);
294
295private:
296 // intentionally not a unique_ptr as this file gets included a lot and using a unique_ptr
297 // results in too many template instantiations
298 class KLocalizedContextPrivate *const d;
299};
300
301#endif
302#endif
303

source code of ki18n/src/i18n/klocalizedcontext.h