1 | /* |
2 | SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org> |
3 | |
4 | SPDX-License-Identifier: LGPL-2.0-or-later |
5 | */ |
6 | |
7 | // Undefine this because we don't want our i18n*() method names to be turned into i18nd*() |
8 | #undef TRANSLATION_DOMAIN |
9 | |
10 | #include "klocalizedcontext.h" |
11 | |
12 | #if KI18N_BUILD_DEPRECATED_SINCE(6, 8) |
13 | #include <klocalizedstring.h> |
14 | |
15 | #include "ki18n_logging.h" |
16 | |
17 | class KLocalizedContextPrivate |
18 | { |
19 | public: |
20 | QString m_translationDomain; |
21 | }; |
22 | |
23 | KLocalizedContext::KLocalizedContext(QObject *parent) |
24 | : QObject(parent) |
25 | , d(new KLocalizedContextPrivate) |
26 | { |
27 | } |
28 | |
29 | KLocalizedContext::~KLocalizedContext() |
30 | { |
31 | delete d; |
32 | } |
33 | |
34 | QString KLocalizedContext::translationDomain() const |
35 | { |
36 | return d->m_translationDomain; |
37 | } |
38 | |
39 | void KLocalizedContext::setTranslationDomain(const QString &domain) |
40 | { |
41 | if (domain != d->m_translationDomain) { |
42 | d->m_translationDomain = domain; |
43 | Q_EMIT translationDomainChanged(translationDomain: domain); |
44 | } |
45 | } |
46 | |
47 | static void subsVariant(KLocalizedString &trMessage, const QVariant &value) |
48 | { |
49 | switch (value.userType()) { |
50 | case QMetaType::QString: |
51 | trMessage = trMessage.subs(a: value.toString()); |
52 | break; |
53 | case QMetaType::Int: |
54 | trMessage = trMessage.subs(a: value.toInt()); |
55 | break; |
56 | case QMetaType::Double: |
57 | trMessage = trMessage.subs(a: value.toDouble()); |
58 | break; |
59 | case QMetaType::Char: |
60 | trMessage = trMessage.subs(a: value.toChar()); |
61 | break; |
62 | default: |
63 | if (value.canConvert<QString>()) { |
64 | trMessage = trMessage.subs(a: value.toString()); |
65 | } else { |
66 | trMessage = trMessage.subs(QStringLiteral("???" )); |
67 | qCWarning(KI18N) << "couldn't convert" << value << "to translate" ; |
68 | } |
69 | } |
70 | } |
71 | |
72 | static void resolveMessage(KLocalizedString &trMessage, |
73 | const QVariant ¶m1, |
74 | const QVariant ¶m2, |
75 | const QVariant ¶m3, |
76 | const QVariant ¶m4, |
77 | const QVariant ¶m5, |
78 | const QVariant ¶m6, |
79 | const QVariant ¶m7, |
80 | const QVariant ¶m8, |
81 | const QVariant ¶m9, |
82 | const QVariant ¶m10 = QVariant()) |
83 | { |
84 | if (param1.isValid()) { |
85 | subsVariant(trMessage, value: param1); |
86 | } |
87 | if (param2.isValid()) { |
88 | subsVariant(trMessage, value: param2); |
89 | } |
90 | if (param3.isValid()) { |
91 | subsVariant(trMessage, value: param3); |
92 | } |
93 | if (param4.isValid()) { |
94 | subsVariant(trMessage, value: param4); |
95 | } |
96 | if (param5.isValid()) { |
97 | subsVariant(trMessage, value: param5); |
98 | } |
99 | if (param6.isValid()) { |
100 | subsVariant(trMessage, value: param6); |
101 | } |
102 | if (param7.isValid()) { |
103 | subsVariant(trMessage, value: param7); |
104 | } |
105 | if (param8.isValid()) { |
106 | subsVariant(trMessage, value: param8); |
107 | } |
108 | if (param9.isValid()) { |
109 | subsVariant(trMessage, value: param9); |
110 | } |
111 | if (param10.isValid()) { |
112 | subsVariant(trMessage, value: param10); |
113 | } |
114 | } |
115 | |
116 | static void resolvePlural(KLocalizedString &trMessage, const QVariant ¶m) |
117 | { |
118 | trMessage = trMessage.subs(a: param.toInt()); |
119 | } |
120 | |
121 | QString KLocalizedContext::i18n(const QString &message, |
122 | const QVariant ¶m1, |
123 | const QVariant ¶m2, |
124 | const QVariant ¶m3, |
125 | const QVariant ¶m4, |
126 | const QVariant ¶m5, |
127 | const QVariant ¶m6, |
128 | const QVariant ¶m7, |
129 | const QVariant ¶m8, |
130 | const QVariant ¶m9, |
131 | const QVariant ¶m10) const |
132 | { |
133 | if (message.isEmpty()) { |
134 | qCWarning(KI18N) << "i18n() needs at least one parameter" ; |
135 | return QString(); |
136 | } |
137 | |
138 | KLocalizedString trMessage; |
139 | if (!d->m_translationDomain.isEmpty()) { |
140 | trMessage = ki18nd(domain: d->m_translationDomain.toUtf8().constData(), text: message.toUtf8().constData()); |
141 | } else { |
142 | trMessage = ki18n(text: message.toUtf8().constData()); |
143 | } |
144 | |
145 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
146 | |
147 | return trMessage.toString(); |
148 | } |
149 | |
150 | QString KLocalizedContext::i18nc(const QString &context, |
151 | const QString &message, |
152 | const QVariant ¶m1, |
153 | const QVariant ¶m2, |
154 | const QVariant ¶m3, |
155 | const QVariant ¶m4, |
156 | const QVariant ¶m5, |
157 | const QVariant ¶m6, |
158 | const QVariant ¶m7, |
159 | const QVariant ¶m8, |
160 | const QVariant ¶m9, |
161 | const QVariant ¶m10) const |
162 | { |
163 | if (context.isEmpty() || message.isEmpty()) { |
164 | qCWarning(KI18N) << "i18nc() needs at least two arguments" ; |
165 | return QString(); |
166 | } |
167 | |
168 | KLocalizedString trMessage; |
169 | if (!d->m_translationDomain.isEmpty()) { |
170 | trMessage = ki18ndc(domain: d->m_translationDomain.toUtf8().constData(), context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
171 | } else { |
172 | trMessage = ki18nc(context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
173 | } |
174 | |
175 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
176 | |
177 | return trMessage.toString(); |
178 | } |
179 | |
180 | QString KLocalizedContext::i18np(const QString &singular, |
181 | const QString &plural, |
182 | const QVariant ¶m1, |
183 | const QVariant ¶m2, |
184 | const QVariant ¶m3, |
185 | const QVariant ¶m4, |
186 | const QVariant ¶m5, |
187 | const QVariant ¶m6, |
188 | const QVariant ¶m7, |
189 | const QVariant ¶m8, |
190 | const QVariant ¶m9, |
191 | const QVariant ¶m10) const |
192 | { |
193 | if (singular.isEmpty() || plural.isEmpty()) { |
194 | qCWarning(KI18N) << "i18np() needs at least two arguments" ; |
195 | return QString(); |
196 | } |
197 | |
198 | KLocalizedString trMessage; |
199 | if (!d->m_translationDomain.isEmpty()) { |
200 | trMessage = ki18ndp(domain: d->m_translationDomain.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
201 | } else { |
202 | trMessage = ki18np(singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
203 | } |
204 | |
205 | resolvePlural(trMessage, param: param1); |
206 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
207 | |
208 | return trMessage.toString(); |
209 | } |
210 | |
211 | QString KLocalizedContext::i18ncp(const QString &context, |
212 | const QString &singular, |
213 | const QString &plural, |
214 | const QVariant ¶m1, |
215 | const QVariant ¶m2, |
216 | const QVariant ¶m3, |
217 | const QVariant ¶m4, |
218 | const QVariant ¶m5, |
219 | const QVariant ¶m6, |
220 | const QVariant ¶m7, |
221 | const QVariant ¶m8, |
222 | const QVariant ¶m9, |
223 | const QVariant ¶m10) const |
224 | { |
225 | if (context.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
226 | qCWarning(KI18N) << "i18ncp() needs at least three arguments" ; |
227 | return QString(); |
228 | } |
229 | |
230 | KLocalizedString trMessage; |
231 | if (!d->m_translationDomain.isEmpty()) { |
232 | trMessage = |
233 | ki18ndcp(domain: d->m_translationDomain.toUtf8().constData(), context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
234 | } else { |
235 | trMessage = ki18ncp(context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
236 | } |
237 | |
238 | resolvePlural(trMessage, param: param1); |
239 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
240 | |
241 | return trMessage.toString(); |
242 | } |
243 | |
244 | QString KLocalizedContext::i18nd(const QString &domain, |
245 | const QString &message, |
246 | const QVariant ¶m1, |
247 | const QVariant ¶m2, |
248 | const QVariant ¶m3, |
249 | const QVariant ¶m4, |
250 | const QVariant ¶m5, |
251 | const QVariant ¶m6, |
252 | const QVariant ¶m7, |
253 | const QVariant ¶m8, |
254 | const QVariant ¶m9, |
255 | const QVariant ¶m10) const |
256 | { |
257 | if (domain.isEmpty() || message.isEmpty()) { |
258 | qCWarning(KI18N) << "i18nd() needs at least two parameters" ; |
259 | return QString(); |
260 | } |
261 | |
262 | KLocalizedString trMessage = ki18nd(domain: domain.toUtf8().constData(), text: message.toUtf8().constData()); |
263 | |
264 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
265 | |
266 | return trMessage.toString(); |
267 | } |
268 | |
269 | QString KLocalizedContext::i18ndc(const QString &domain, |
270 | const QString &context, |
271 | const QString &message, |
272 | const QVariant ¶m1, |
273 | const QVariant ¶m2, |
274 | const QVariant ¶m3, |
275 | const QVariant ¶m4, |
276 | const QVariant ¶m5, |
277 | const QVariant ¶m6, |
278 | const QVariant ¶m7, |
279 | const QVariant ¶m8, |
280 | const QVariant ¶m9, |
281 | const QVariant ¶m10) const |
282 | { |
283 | if (domain.isEmpty() || context.isEmpty() || message.isEmpty()) { |
284 | qCWarning(KI18N) << "i18ndc() needs at least three arguments" ; |
285 | return QString(); |
286 | } |
287 | |
288 | KLocalizedString trMessage = ki18ndc(domain: domain.toUtf8().constData(), context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
289 | |
290 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
291 | |
292 | return trMessage.toString(); |
293 | } |
294 | |
295 | QString KLocalizedContext::i18ndp(const QString &domain, |
296 | const QString &singular, |
297 | const QString &plural, |
298 | const QVariant ¶m1, |
299 | const QVariant ¶m2, |
300 | const QVariant ¶m3, |
301 | const QVariant ¶m4, |
302 | const QVariant ¶m5, |
303 | const QVariant ¶m6, |
304 | const QVariant ¶m7, |
305 | const QVariant ¶m8, |
306 | const QVariant ¶m9, |
307 | const QVariant ¶m10) const |
308 | { |
309 | if (domain.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
310 | qCWarning(KI18N) << "i18ndp() needs at least three arguments" ; |
311 | return QString(); |
312 | } |
313 | |
314 | KLocalizedString trMessage = ki18ndp(domain: domain.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
315 | |
316 | resolvePlural(trMessage, param: param1); |
317 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
318 | |
319 | return trMessage.toString(); |
320 | } |
321 | |
322 | QString KLocalizedContext::i18ndcp(const QString &domain, |
323 | const QString &context, |
324 | const QString &singular, |
325 | const QString &plural, |
326 | const QVariant ¶m1, |
327 | const QVariant ¶m2, |
328 | const QVariant ¶m3, |
329 | const QVariant ¶m4, |
330 | const QVariant ¶m5, |
331 | const QVariant ¶m6, |
332 | const QVariant ¶m7, |
333 | const QVariant ¶m8, |
334 | const QVariant ¶m9, |
335 | const QVariant ¶m10) const |
336 | { |
337 | if (domain.isEmpty() || context.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
338 | qCWarning(KI18N) << "i18ndcp() needs at least four arguments" ; |
339 | return QString(); |
340 | } |
341 | |
342 | KLocalizedString trMessage = |
343 | ki18ndcp(domain: domain.toUtf8().constData(), context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
344 | |
345 | resolvePlural(trMessage, param: param1); |
346 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
347 | |
348 | return trMessage.toString(); |
349 | } |
350 | |
351 | ///////////////////////// |
352 | |
353 | QString KLocalizedContext::xi18n(const QString &message, |
354 | const QVariant ¶m1, |
355 | const QVariant ¶m2, |
356 | const QVariant ¶m3, |
357 | const QVariant ¶m4, |
358 | const QVariant ¶m5, |
359 | const QVariant ¶m6, |
360 | const QVariant ¶m7, |
361 | const QVariant ¶m8, |
362 | const QVariant ¶m9, |
363 | const QVariant ¶m10) const |
364 | { |
365 | if (message.isEmpty()) { |
366 | qCWarning(KI18N) << "xi18n() needs at least one parameter" ; |
367 | return QString(); |
368 | } |
369 | |
370 | KLocalizedString trMessage; |
371 | if (!d->m_translationDomain.isEmpty()) { |
372 | trMessage = kxi18nd(domain: d->m_translationDomain.toUtf8().constData(), text: message.toUtf8().constData()); |
373 | } else { |
374 | trMessage = kxi18n(text: message.toUtf8().constData()); |
375 | } |
376 | |
377 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
378 | |
379 | return trMessage.toString(); |
380 | } |
381 | |
382 | QString KLocalizedContext::xi18nc(const QString &context, |
383 | const QString &message, |
384 | const QVariant ¶m1, |
385 | const QVariant ¶m2, |
386 | const QVariant ¶m3, |
387 | const QVariant ¶m4, |
388 | const QVariant ¶m5, |
389 | const QVariant ¶m6, |
390 | const QVariant ¶m7, |
391 | const QVariant ¶m8, |
392 | const QVariant ¶m9, |
393 | const QVariant ¶m10) const |
394 | { |
395 | if (context.isEmpty() || message.isEmpty()) { |
396 | qCWarning(KI18N) << "xi18nc() needs at least two arguments" ; |
397 | return QString(); |
398 | } |
399 | |
400 | KLocalizedString trMessage; |
401 | if (!d->m_translationDomain.isEmpty()) { |
402 | trMessage = kxi18ndc(domain: d->m_translationDomain.toUtf8().constData(), context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
403 | } else { |
404 | trMessage = kxi18nc(context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
405 | } |
406 | |
407 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
408 | |
409 | return trMessage.toString(); |
410 | } |
411 | |
412 | QString KLocalizedContext::xi18np(const QString &singular, |
413 | const QString &plural, |
414 | const QVariant ¶m1, |
415 | const QVariant ¶m2, |
416 | const QVariant ¶m3, |
417 | const QVariant ¶m4, |
418 | const QVariant ¶m5, |
419 | const QVariant ¶m6, |
420 | const QVariant ¶m7, |
421 | const QVariant ¶m8, |
422 | const QVariant ¶m9, |
423 | const QVariant ¶m10) const |
424 | { |
425 | if (singular.isEmpty() || plural.isEmpty()) { |
426 | qCWarning(KI18N) << "xi18np() needs at least two arguments" ; |
427 | return QString(); |
428 | } |
429 | |
430 | KLocalizedString trMessage; |
431 | if (!d->m_translationDomain.isEmpty()) { |
432 | trMessage = kxi18ndp(domain: d->m_translationDomain.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
433 | } else { |
434 | trMessage = kxi18np(singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
435 | } |
436 | |
437 | resolvePlural(trMessage, param: param1); |
438 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
439 | |
440 | return trMessage.toString(); |
441 | } |
442 | |
443 | QString KLocalizedContext::xi18ncp(const QString &context, |
444 | const QString &singular, |
445 | const QString &plural, |
446 | const QVariant ¶m1, |
447 | const QVariant ¶m2, |
448 | const QVariant ¶m3, |
449 | const QVariant ¶m4, |
450 | const QVariant ¶m5, |
451 | const QVariant ¶m6, |
452 | const QVariant ¶m7, |
453 | const QVariant ¶m8, |
454 | const QVariant ¶m9, |
455 | const QVariant ¶m10) const |
456 | { |
457 | if (context.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
458 | qCWarning(KI18N) << "xi18ncp() needs at least three arguments" ; |
459 | return QString(); |
460 | } |
461 | |
462 | KLocalizedString trMessage; |
463 | if (!d->m_translationDomain.isEmpty()) { |
464 | trMessage = |
465 | kxi18ndcp(domain: d->m_translationDomain.toUtf8().constData(), context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
466 | } else { |
467 | trMessage = kxi18ncp(context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
468 | } |
469 | |
470 | resolvePlural(trMessage, param: param1); |
471 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
472 | |
473 | return trMessage.toString(); |
474 | } |
475 | |
476 | QString KLocalizedContext::xi18nd(const QString &domain, |
477 | const QString &message, |
478 | const QVariant ¶m1, |
479 | const QVariant ¶m2, |
480 | const QVariant ¶m3, |
481 | const QVariant ¶m4, |
482 | const QVariant ¶m5, |
483 | const QVariant ¶m6, |
484 | const QVariant ¶m7, |
485 | const QVariant ¶m8, |
486 | const QVariant ¶m9, |
487 | const QVariant ¶m10) const |
488 | { |
489 | if (domain.isEmpty() || message.isEmpty()) { |
490 | qCWarning(KI18N) << "xi18nd() needs at least two parameters" ; |
491 | return QString(); |
492 | } |
493 | |
494 | KLocalizedString trMessage = kxi18nd(domain: domain.toUtf8().constData(), text: message.toUtf8().constData()); |
495 | |
496 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
497 | |
498 | return trMessage.toString(); |
499 | } |
500 | |
501 | QString KLocalizedContext::xi18ndc(const QString &domain, |
502 | const QString &context, |
503 | const QString &message, |
504 | const QVariant ¶m1, |
505 | const QVariant ¶m2, |
506 | const QVariant ¶m3, |
507 | const QVariant ¶m4, |
508 | const QVariant ¶m5, |
509 | const QVariant ¶m6, |
510 | const QVariant ¶m7, |
511 | const QVariant ¶m8, |
512 | const QVariant ¶m9, |
513 | const QVariant ¶m10) const |
514 | { |
515 | if (domain.isEmpty() || context.isEmpty() || message.isEmpty()) { |
516 | qCWarning(KI18N) << "x18ndc() needs at least three arguments" ; |
517 | return QString(); |
518 | } |
519 | |
520 | KLocalizedString trMessage = kxi18ndc(domain: domain.toUtf8().constData(), context: context.toUtf8().constData(), text: message.toUtf8().constData()); |
521 | |
522 | resolveMessage(trMessage, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10); |
523 | |
524 | return trMessage.toString(); |
525 | } |
526 | |
527 | QString KLocalizedContext::xi18ndp(const QString &domain, |
528 | const QString &singular, |
529 | const QString &plural, |
530 | const QVariant ¶m1, |
531 | const QVariant ¶m2, |
532 | const QVariant ¶m3, |
533 | const QVariant ¶m4, |
534 | const QVariant ¶m5, |
535 | const QVariant ¶m6, |
536 | const QVariant ¶m7, |
537 | const QVariant ¶m8, |
538 | const QVariant ¶m9, |
539 | const QVariant ¶m10) const |
540 | { |
541 | if (domain.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
542 | qCWarning(KI18N) << "xi18ndp() needs at least three arguments" ; |
543 | return QString(); |
544 | } |
545 | |
546 | KLocalizedString trMessage = kxi18ndp(domain: domain.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
547 | |
548 | resolvePlural(trMessage, param: param1); |
549 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
550 | |
551 | return trMessage.toString(); |
552 | } |
553 | |
554 | QString KLocalizedContext::xi18ndcp(const QString &domain, |
555 | const QString &context, |
556 | const QString &singular, |
557 | const QString &plural, |
558 | const QVariant ¶m1, |
559 | const QVariant ¶m2, |
560 | const QVariant ¶m3, |
561 | const QVariant ¶m4, |
562 | const QVariant ¶m5, |
563 | const QVariant ¶m6, |
564 | const QVariant ¶m7, |
565 | const QVariant ¶m8, |
566 | const QVariant ¶m9, |
567 | const QVariant ¶m10) const |
568 | { |
569 | if (domain.isEmpty() || context.isEmpty() || singular.isEmpty() || plural.isEmpty()) { |
570 | qCWarning(KI18N) << "xi18ndcp() needs at least four arguments" ; |
571 | return QString(); |
572 | } |
573 | |
574 | KLocalizedString trMessage = |
575 | kxi18ndcp(domain: domain.toUtf8().constData(), context: context.toUtf8().constData(), singular: singular.toUtf8().constData(), plural: plural.toUtf8().constData()); |
576 | |
577 | resolvePlural(trMessage, param: param1); |
578 | resolveMessage(trMessage, param1: param2, param2: param3, param3: param4, param4: param5, param5: param6, param6: param7, param7: param8, param8: param9, param9: param10); |
579 | |
580 | return trMessage.toString(); |
581 | } |
582 | |
583 | #include "moc_klocalizedcontext.cpp" |
584 | #endif |
585 | |