KI18n 5.109.0
klocalizedstring.h
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 SPDX-FileCopyrightText: 2006, 2013 Chusslove Illich <caslav.ilic@gmx.net>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6#ifndef KLOCALIZEDSTRING_H
7#define KLOCALIZEDSTRING_H
8
9#include <ki18n_export.h>
10
11#include <QChar>
12#include <QLatin1Char>
13#include <QSet>
14#include <QString>
15#include <QStringList>
16
17#include <memory>
18
19#include <kuitsetup.h>
20
21// enforce header to be parsed before redefining i18n* with preprocessor macros
22// depending on TRANSLATION_DOMAIN (see bottom of file)
23#include <klocalizedcontext.h>
24
25class KLocalizedStringPrivate;
27
32#if KI18N_ENABLE_DEPRECATED_SINCE(5, 89)
33#ifndef I18N_NOOP
41#define I18N_NOOP(text) text
42#endif
43#endif
44
45#if KI18N_ENABLE_DEPRECATED_SINCE(5, 89)
46#ifndef I18NC_NOOP
54#define I18NC_NOOP(context, text) context, text
55#endif
56#endif
57
58#if KI18N_ENABLE_DEPRECATED_SINCE(5, 89)
59#ifndef I18N_NOOP2
69#define I18N_NOOP2(context, text) text
70#endif
71#endif
72
73#if KI18N_ENABLE_DEPRECATED_SINCE(5, 0)
74#ifndef I18N_NOOP2_NOSTRIP
80#define I18N_NOOP2_NOSTRIP(context, text) context, text
81#endif
82#endif // KI18N_ENABLE_DEPRECATED_SINCE(5, 0)
83
98class KI18N_EXPORT KLocalizedString
99{
100 friend class KLocalizedStringPrivate;
101 friend class KLazyLocalizedString;
102
103 friend KLocalizedString KI18N_EXPORT ki18n(const char *text);
104 friend KLocalizedString KI18N_EXPORT ki18nc(const char *context, const char *text);
105 friend KLocalizedString KI18N_EXPORT ki18np(const char *singular, const char *plural);
106 friend KLocalizedString KI18N_EXPORT ki18ncp(const char *context, const char *singular, const char *plural);
107 friend KLocalizedString KI18N_EXPORT ki18nd(const char *domain, const char *text);
108 friend KLocalizedString KI18N_EXPORT ki18ndc(const char *domain, const char *context, const char *text);
109 friend KLocalizedString KI18N_EXPORT ki18ndp(const char *domain, const char *singular, const char *plural);
110 friend KLocalizedString KI18N_EXPORT ki18ndcp(const char *domain, const char *context, const char *singular, const char *plural);
111
112 friend KLocalizedString KI18N_EXPORT kxi18n(const char *text);
113 friend KLocalizedString KI18N_EXPORT kxi18nc(const char *context, const char *text);
114 friend KLocalizedString KI18N_EXPORT kxi18np(const char *singular, const char *plural);
115 friend KLocalizedString KI18N_EXPORT kxi18ncp(const char *context, const char *singular, const char *plural);
116 friend KLocalizedString KI18N_EXPORT kxi18nd(const char *domain, const char *text);
117 friend KLocalizedString KI18N_EXPORT kxi18ndc(const char *domain, const char *context, const char *text);
118 friend KLocalizedString KI18N_EXPORT kxi18ndp(const char *domain, const char *singular, const char *plural);
119 friend KLocalizedString KI18N_EXPORT kxi18ndcp(const char *domain, const char *context, const char *singular, const char *plural);
120
121public:
134
139
144
149
162 bool isEmpty() const;
163
177 Q_REQUIRED_RESULT QString toString() const;
178
189 Q_REQUIRED_RESULT QString toString(const QStringList &languages) const;
190
191#if 0 // until locale system is ready
201 QString toString(const KLocale *locale) const;
202#endif
203
212 Q_REQUIRED_RESULT QString toString(const char *domain) const;
213
225 Q_REQUIRED_RESULT QString toString(Kuit::VisualFormat format) const;
226
233 Q_REQUIRED_RESULT KLocalizedString withLanguages(const QStringList &languages) const;
234
235#if 0 // until locale system is ready
242 KLocalizedString withLocale(const KLocale *locale) const;
243#endif
244
251 Q_REQUIRED_RESULT KLocalizedString withDomain(const char *domain) const;
252
261 Q_REQUIRED_RESULT KLocalizedString withFormat(Kuit::VisualFormat format) const;
262
275 Q_REQUIRED_RESULT KLocalizedString subs(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
276
289 Q_REQUIRED_RESULT KLocalizedString subs(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
290
303 Q_REQUIRED_RESULT KLocalizedString subs(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
304
317 Q_REQUIRED_RESULT KLocalizedString subs(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
318
331 Q_REQUIRED_RESULT KLocalizedString subs(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
332
345 Q_REQUIRED_RESULT KLocalizedString subs(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const;
346
359 Q_REQUIRED_RESULT KLocalizedString subs(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const;
360
371 Q_REQUIRED_RESULT KLocalizedString subs(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const;
372
383 Q_REQUIRED_RESULT KLocalizedString subs(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const;
384
395 Q_REQUIRED_RESULT KLocalizedString subs(const KLocalizedString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const;
396
406 Q_REQUIRED_RESULT KLocalizedString inContext(const QString &key, const QString &value) const;
407
425 Q_REQUIRED_RESULT KLocalizedString relaxSubs() const;
426
437 Q_REQUIRED_RESULT KLocalizedString ignoreMarkup() const;
438
444 Q_REQUIRED_RESULT QByteArray untranslatedText() const;
445
465 static void setApplicationDomain(const char *domain);
466
472 static QByteArray applicationDomain();
473
474#if 0 // until locale system is ready
484 static void setLocale(const KLocale &locale);
485#endif
486
498 static QStringList languages();
499
511 static void setLanguages(const QStringList &languages);
512
522 static void clearLanguages();
523
533 static bool isApplicationTranslatedInto(const QString &language);
534
549 static QSet<QString> availableApplicationTranslations();
550
570 static QSet<QString> availableDomainTranslations(const QByteArray &domain);
571
580 static void addDomainLocaleDir(const QByteArray &domain, const QString &path);
581
597 Q_REQUIRED_RESULT static QString localizedFilePath(const QString &filePath);
598
613 Q_REQUIRED_RESULT static QString removeAcceleratorMarker(const QString &label);
614
615#if KI18N_ENABLE_DEPRECATED_SINCE(5, 0)
631 KI18N_DEPRECATED_VERSION(5, 0, "See API docs")
632 Q_REQUIRED_RESULT static QString translateQt(const char *context, const char *text, const char *comment, int n);
633#endif
634
635#if KI18N_ENABLE_DEPRECATED_SINCE(5, 0)
646 KI18N_DEPRECATED_VERSION(5, 0, "See API docs")
647 static void insertQtDomain(const char *domain);
648#endif
649
650#if KI18N_ENABLE_DEPRECATED_SINCE(5, 0)
667 KI18N_DEPRECATED_VERSION(5, 0, "See API docs")
668 static void removeQtDomain(const char *domain);
669#endif
670
671private:
672 // exported because called from inline KLazyLocalizedString::operator KLocalizedString()
673 KLocalizedString(const char *domain, const char *context, const char *text, const char *plural, bool markupAware);
674
675private:
676 std::unique_ptr<KLocalizedStringPrivate> const d;
677};
678
679// Do not document every multi-argument i18n* call separately,
680// but provide special quasi-calls that only Doxygen sees.
681// Placed in front of ki18n* calls, because i18n* are more basic.
682#ifdef K_DOXYGEN
683
692QString i18n(const char *text, const TYPE &arg...);
693
703QString i18nc(const char *context, const char *text, const TYPE &arg...);
704
714QString i18np(const char *singular, const char *plural, const TYPE &arg...);
715
726QString i18ncp(const char *context, const char *singular, const char *plural, const TYPE &arg...);
727
737QString i18nd(const char *domain, const char *text, const TYPE &arg...);
738
749QString i18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...);
750
761QString i18ndp(const char *domain, const char *singular, const char *plural, const TYPE &arg...);
762
775QString i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const TYPE &arg...);
776
785QString xi18n(const char *text, const TYPE &arg...);
786
796QString xi18nc(const char *context, const char *text, const TYPE &arg...);
797
807QString xi18np(const char *singular, const char *plural, const TYPE &arg...);
808
820QString xi18ncp(const char *context, const char *singular, const char *plural, const TYPE &arg...);
821
831QString xi18nd(const char *domain, const char *text, const TYPE &arg...);
832
844QString xi18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...);
845
857QString xi18ndp(const char *domain, const char *singular, const char *plural, const TYPE &arg...);
858
871QString xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const TYPE &arg...);
872
873#endif // K_DOXYGEN
874
881KLocalizedString KI18N_EXPORT ki18n(const char *text);
882
890KLocalizedString KI18N_EXPORT ki18nc(const char *context, const char *text);
891
899KLocalizedString KI18N_EXPORT ki18np(const char *singular, const char *plural);
900
909KLocalizedString KI18N_EXPORT ki18ncp(const char *context, const char *singular, const char *plural);
910
918KLocalizedString KI18N_EXPORT ki18nd(const char *domain, const char *text);
919
928KLocalizedString KI18N_EXPORT ki18ndc(const char *domain, const char *context, const char *text);
929
938KLocalizedString KI18N_EXPORT ki18ndp(const char *domain, const char *singular, const char *plural);
939
949KLocalizedString KI18N_EXPORT ki18ndcp(const char *domain, const char *context, const char *singular, const char *plural);
950
957KLocalizedString KI18N_EXPORT kxi18n(const char *text);
958
966KLocalizedString KI18N_EXPORT kxi18nc(const char *context, const char *text);
967
975KLocalizedString KI18N_EXPORT kxi18np(const char *singular, const char *plural);
976
986KLocalizedString KI18N_EXPORT kxi18ncp(const char *context, const char *singular, const char *plural);
987
995KLocalizedString KI18N_EXPORT kxi18nd(const char *domain, const char *text);
996
1005KLocalizedString KI18N_EXPORT kxi18ndc(const char *domain, const char *context, const char *text);
1006
1015KLocalizedString KI18N_EXPORT kxi18ndp(const char *domain, const char *singular, const char *plural);
1016
1027KLocalizedString KI18N_EXPORT kxi18ndcp(const char *domain, const char *context, const char *singular, const char *plural);
1028
1038inline QString tr2i18n(const char *text, const char *comment = nullptr)
1039{
1040 if (comment && comment[0] && text && text[0]) {
1041 return ki18nc(comment, text).toString();
1042 } else if (text && text[0]) {
1043 return ki18n(text).toString();
1044 } else {
1045 return QString();
1046 }
1047}
1048
1059inline QString tr2i18nd(const char *domain, const char *text, const char *comment = nullptr)
1060{
1061 if (comment && comment[0] && text && text[0]) {
1062 return ki18ndc(domain, comment, text).toString();
1063 } else if (text && text[0]) {
1064 return ki18nd(domain, text).toString();
1065 } else {
1066 return QString();
1067 }
1068}
1069
1079inline QString tr2xi18n(const char *text, const char *comment = nullptr)
1080{
1081 if (comment && comment[0] && text && text[0]) {
1082 return kxi18nc(comment, text).toString();
1083 } else if (text && text[0]) {
1084 return kxi18n(text).toString();
1085 } else {
1086 return QString();
1087 }
1088}
1089
1100inline QString tr2xi18nd(const char *domain, const char *text, const char *comment = nullptr)
1101{
1102 if (comment && comment[0] && text && text[0]) {
1103 return kxi18ndc(domain, comment, text).toString();
1104 } else if (text && text[0]) {
1105 return kxi18nd(domain, text).toString();
1106 } else {
1107 return QString();
1108 }
1109}
1110
1111#ifndef K_DOXYGEN
1112
1113#ifndef NDEBUG
1114#define I18N_ERR_MSG String_literal_as_second_argument_to_i18n___Perhaps_you_need_i18nc_or_i18np
1115template<typename T, int s>
1116class I18nTypeCheck
1117{
1118public:
1119 static void I18N_ERR_MSG()
1120 {
1121 }
1122};
1123template<int s>
1124class I18nTypeCheck<char[s], s>
1125{
1126};
1127#define STATIC_ASSERT_NOT_LITERAL_STRING(T) I18nTypeCheck<T, sizeof(T)>::I18N_ERR_MSG();
1128#else
1129#define STATIC_ASSERT_NOT_LITERAL_STRING(T)
1130#endif
1131
1132// >>>>> Basic calls
1133// Autogenerated; contact maintainer for batch changes.
1134inline QString i18n(const char *text)
1135{
1136 return ki18n(text).toString();
1137}
1138template<typename A1>
1139inline QString i18n(const char *text, const A1 &a1)
1140{
1141 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1142 return ki18n(text).subs(a1).toString();
1143}
1144template<typename A1, typename A2>
1145inline QString i18n(const char *text, const A1 &a1, const A2 &a2)
1146{
1147 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1148 return ki18n(text).subs(a1).subs(a2).toString();
1149}
1150template<typename A1, typename A2, typename A3>
1151inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1152{
1153 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1154 return ki18n(text).subs(a1).subs(a2).subs(a3).toString();
1155}
1156template<typename A1, typename A2, typename A3, typename A4>
1157inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1158{
1159 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1160 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1161}
1162template<typename A1, typename A2, typename A3, typename A4, typename A5>
1163inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1164{
1165 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1166 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1167}
1168template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1169inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1170{
1171 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1172 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1173}
1174template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1175inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1176{
1177 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1178 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1179}
1180template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1181inline QString i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1182{
1183 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1184 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1185}
1186template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1187inline QString
1188i18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
1189{
1190 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1191 return ki18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1192}
1193// <<<<<<< End of basic calls
1194
1195// >>>>> Context calls
1196// Autogenerated; contact maintainer for batch changes.
1197inline QString i18nc(const char *context, const char *text)
1198{
1199 return ki18nc(context, text).toString();
1200}
1201template<typename A1>
1202inline QString i18nc(const char *context, const char *text, const A1 &a1)
1203{
1204 return ki18nc(context, text).subs(a1).toString();
1205}
1206template<typename A1, typename A2>
1207inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2)
1208{
1209 return ki18nc(context, text).subs(a1).subs(a2).toString();
1210}
1211template<typename A1, typename A2, typename A3>
1212inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1213{
1214 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).toString();
1215}
1216template<typename A1, typename A2, typename A3, typename A4>
1217inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1218{
1219 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1220}
1221template<typename A1, typename A2, typename A3, typename A4, typename A5>
1222inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1223{
1224 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1225}
1226template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1227inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1228{
1229 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1230}
1231template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1232inline QString i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1233{
1234 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1235}
1236template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1237inline QString
1238i18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1239{
1240 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1241}
1242template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1243inline QString i18nc(const char *context,
1244 const char *text,
1245 const A1 &a1,
1246 const A2 &a2,
1247 const A3 &a3,
1248 const A4 &a4,
1249 const A5 &a5,
1250 const A6 &a6,
1251 const A7 &a7,
1252 const A8 &a8,
1253 const A9 &a9)
1254{
1255 return ki18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1256}
1257// <<<<< End of context calls
1258
1259// >>>>> Plural calls
1260// Autogenerated; contact maintainer for batch changes.
1261template<typename A1>
1262inline QString i18np(const char *singular, const char *plural, const A1 &a1)
1263{
1264 return ki18np(singular, plural).subs(a1).toString();
1265}
1266template<typename A1, typename A2>
1267inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1268{
1269 return ki18np(singular, plural).subs(a1).subs(a2).toString();
1270}
1271template<typename A1, typename A2, typename A3>
1272inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1273{
1274 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).toString();
1275}
1276template<typename A1, typename A2, typename A3, typename A4>
1277inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1278{
1279 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1280}
1281template<typename A1, typename A2, typename A3, typename A4, typename A5>
1282inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1283{
1284 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1285}
1286template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1287inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1288{
1289 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1290}
1291template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1292inline QString i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1293{
1294 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1295}
1296template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1297inline QString
1298i18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1299{
1300 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1301}
1302template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1303inline QString i18np(const char *singular,
1304 const char *plural,
1305 const A1 &a1,
1306 const A2 &a2,
1307 const A3 &a3,
1308 const A4 &a4,
1309 const A5 &a5,
1310 const A6 &a6,
1311 const A7 &a7,
1312 const A8 &a8,
1313 const A9 &a9)
1314{
1315 return ki18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1316}
1317// <<<<< End of plural calls
1318
1319// >>>>> Context-plural calls
1320// Autogenerated; contact maintainer for batch changes.
1321template<typename A1>
1322inline QString i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1)
1323{
1324 return ki18ncp(context, singular, plural).subs(a1).toString();
1325}
1326template<typename A1, typename A2>
1327inline QString i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1328{
1329 return ki18ncp(context, singular, plural).subs(a1).subs(a2).toString();
1330}
1331template<typename A1, typename A2, typename A3>
1332inline QString i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1333{
1334 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).toString();
1335}
1336template<typename A1, typename A2, typename A3, typename A4>
1337inline QString i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1338{
1339 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1340}
1341template<typename A1, typename A2, typename A3, typename A4, typename A5>
1342inline QString i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1343{
1344 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1345}
1346template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1347inline QString
1348i18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1349{
1350 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1351}
1352template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1353inline QString i18ncp(const char *context,
1354 const char *singular,
1355 const char *plural,
1356 const A1 &a1,
1357 const A2 &a2,
1358 const A3 &a3,
1359 const A4 &a4,
1360 const A5 &a5,
1361 const A6 &a6,
1362 const A7 &a7)
1363{
1364 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1365}
1366template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1367inline QString i18ncp(const char *context,
1368 const char *singular,
1369 const char *plural,
1370 const A1 &a1,
1371 const A2 &a2,
1372 const A3 &a3,
1373 const A4 &a4,
1374 const A5 &a5,
1375 const A6 &a6,
1376 const A7 &a7,
1377 const A8 &a8)
1378{
1379 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1380}
1381template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1382inline QString i18ncp(const char *context,
1383 const char *singular,
1384 const char *plural,
1385 const A1 &a1,
1386 const A2 &a2,
1387 const A3 &a3,
1388 const A4 &a4,
1389 const A5 &a5,
1390 const A6 &a6,
1391 const A7 &a7,
1392 const A8 &a8,
1393 const A9 &a9)
1394{
1395 return ki18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1396}
1397// <<<<< End of context-plural calls
1398
1399// >>>>> Basic calls with domain
1400// Autogenerated; contact maintainer for batch changes.
1401inline QString i18nd(const char *domain, const char *text)
1402{
1403 return ki18nd(domain, text).toString();
1404}
1405template<typename A1>
1406inline QString i18nd(const char *domain, const char *text, const A1 &a1)
1407{
1408 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1409 return ki18nd(domain, text).subs(a1).toString();
1410}
1411template<typename A1, typename A2>
1412inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2)
1413{
1414 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1415 return ki18nd(domain, text).subs(a1).subs(a2).toString();
1416}
1417template<typename A1, typename A2, typename A3>
1418inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1419{
1420 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1421 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).toString();
1422}
1423template<typename A1, typename A2, typename A3, typename A4>
1424inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1425{
1426 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1427 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1428}
1429template<typename A1, typename A2, typename A3, typename A4, typename A5>
1430inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1431{
1432 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1433 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1434}
1435template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1436inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1437{
1438 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1439 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1440}
1441template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1442inline QString i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1443{
1444 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1445 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1446}
1447template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1448inline QString
1449i18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1450{
1451 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1452 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1453}
1454template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1455inline QString i18nd(const char *domain,
1456 const char *text,
1457 const A1 &a1,
1458 const A2 &a2,
1459 const A3 &a3,
1460 const A4 &a4,
1461 const A5 &a5,
1462 const A6 &a6,
1463 const A7 &a7,
1464 const A8 &a8,
1465 const A9 &a9)
1466{
1467 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1468 return ki18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1469}
1470// <<<<<<< End of basic calls with domain
1471
1472// >>>>> Context calls with domain
1473// Autogenerated; contact maintainer for batch changes.
1474inline QString i18ndc(const char *domain, const char *context, const char *text)
1475{
1476 return ki18ndc(domain, context, text).toString();
1477}
1478template<typename A1>
1479inline QString i18ndc(const char *domain, const char *context, const char *text, const A1 &a1)
1480{
1481 return ki18ndc(domain, context, text).subs(a1).toString();
1482}
1483template<typename A1, typename A2>
1484inline QString i18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2)
1485{
1486 return ki18ndc(domain, context, text).subs(a1).subs(a2).toString();
1487}
1488template<typename A1, typename A2, typename A3>
1489inline QString i18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1490{
1491 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).toString();
1492}
1493template<typename A1, typename A2, typename A3, typename A4>
1494inline QString i18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1495{
1496 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1497}
1498template<typename A1, typename A2, typename A3, typename A4, typename A5>
1499inline QString i18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1500{
1501 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1502}
1503template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1504inline QString
1505i18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1506{
1507 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1508}
1509template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1510inline QString i18ndc(const char *domain,
1511 const char *context,
1512 const char *text,
1513 const A1 &a1,
1514 const A2 &a2,
1515 const A3 &a3,
1516 const A4 &a4,
1517 const A5 &a5,
1518 const A6 &a6,
1519 const A7 &a7)
1520{
1521 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1522}
1523template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1524inline QString i18ndc(const char *domain,
1525 const char *context,
1526 const char *text,
1527 const A1 &a1,
1528 const A2 &a2,
1529 const A3 &a3,
1530 const A4 &a4,
1531 const A5 &a5,
1532 const A6 &a6,
1533 const A7 &a7,
1534 const A8 &a8)
1535{
1536 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1537}
1538template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1539inline QString i18ndc(const char *domain,
1540 const char *context,
1541 const char *text,
1542 const A1 &a1,
1543 const A2 &a2,
1544 const A3 &a3,
1545 const A4 &a4,
1546 const A5 &a5,
1547 const A6 &a6,
1548 const A7 &a7,
1549 const A8 &a8,
1550 const A9 &a9)
1551{
1552 return ki18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1553}
1554// <<<<< End of context calls with domain
1555
1556// >>>>> Plural calls with domain
1557// Autogenerated; contact maintainer for batch changes.
1558template<typename A1>
1559inline QString i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1)
1560{
1561 return ki18ndp(domain, singular, plural).subs(a1).toString();
1562}
1563template<typename A1, typename A2>
1564inline QString i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1565{
1566 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).toString();
1567}
1568template<typename A1, typename A2, typename A3>
1569inline QString i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1570{
1571 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).toString();
1572}
1573template<typename A1, typename A2, typename A3, typename A4>
1574inline QString i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1575{
1576 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1577}
1578template<typename A1, typename A2, typename A3, typename A4, typename A5>
1579inline QString i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1580{
1581 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1582}
1583template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1584inline QString
1585i18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1586{
1587 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1588}
1589template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1590inline QString i18ndp(const char *domain,
1591 const char *singular,
1592 const char *plural,
1593 const A1 &a1,
1594 const A2 &a2,
1595 const A3 &a3,
1596 const A4 &a4,
1597 const A5 &a5,
1598 const A6 &a6,
1599 const A7 &a7)
1600{
1601 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1602}
1603template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1604inline QString i18ndp(const char *domain,
1605 const char *singular,
1606 const char *plural,
1607 const A1 &a1,
1608 const A2 &a2,
1609 const A3 &a3,
1610 const A4 &a4,
1611 const A5 &a5,
1612 const A6 &a6,
1613 const A7 &a7,
1614 const A8 &a8)
1615{
1616 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1617}
1618template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1619inline QString i18ndp(const char *domain,
1620 const char *singular,
1621 const char *plural,
1622 const A1 &a1,
1623 const A2 &a2,
1624 const A3 &a3,
1625 const A4 &a4,
1626 const A5 &a5,
1627 const A6 &a6,
1628 const A7 &a7,
1629 const A8 &a8,
1630 const A9 &a9)
1631{
1632 return ki18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1633}
1634// <<<<< End of plural calls with domain
1635
1636// >>>>> Context-plural calls with domain
1637// Autogenerated; contact maintainer for batch changes.
1638template<typename A1>
1639inline QString i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1)
1640{
1641 return ki18ndcp(domain, context, singular, plural).subs(a1).toString();
1642}
1643template<typename A1, typename A2>
1644inline QString i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1645{
1646 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).toString();
1647}
1648template<typename A1, typename A2, typename A3>
1649inline QString i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1650{
1651 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).toString();
1652}
1653template<typename A1, typename A2, typename A3, typename A4>
1654inline QString
1655i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1656{
1657 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1658}
1659template<typename A1, typename A2, typename A3, typename A4, typename A5>
1660inline QString
1661i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1662{
1663 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1664}
1665template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1666inline QString i18ndcp(const char *domain,
1667 const char *context,
1668 const char *singular,
1669 const char *plural,
1670 const A1 &a1,
1671 const A2 &a2,
1672 const A3 &a3,
1673 const A4 &a4,
1674 const A5 &a5,
1675 const A6 &a6)
1676{
1677 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1678}
1679template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1680inline QString i18ndcp(const char *domain,
1681 const char *context,
1682 const char *singular,
1683 const char *plural,
1684 const A1 &a1,
1685 const A2 &a2,
1686 const A3 &a3,
1687 const A4 &a4,
1688 const A5 &a5,
1689 const A6 &a6,
1690 const A7 &a7)
1691{
1692 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1693}
1694template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1695inline QString i18ndcp(const char *domain,
1696 const char *context,
1697 const char *singular,
1698 const char *plural,
1699 const A1 &a1,
1700 const A2 &a2,
1701 const A3 &a3,
1702 const A4 &a4,
1703 const A5 &a5,
1704 const A6 &a6,
1705 const A7 &a7,
1706 const A8 &a8)
1707{
1708 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1709}
1710template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1711inline QString i18ndcp(const char *domain,
1712 const char *context,
1713 const char *singular,
1714 const char *plural,
1715 const A1 &a1,
1716 const A2 &a2,
1717 const A3 &a3,
1718 const A4 &a4,
1719 const A5 &a5,
1720 const A6 &a6,
1721 const A7 &a7,
1722 const A8 &a8,
1723 const A9 &a9)
1724{
1725 return ki18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1726}
1727// <<<<< End of context-plural calls with domain
1728
1729// >>>>> Markup-aware basic calls
1730// Autogenerated; contact maintainer for batch changes.
1731inline QString xi18n(const char *text)
1732{
1733 return kxi18n(text).toString();
1734}
1735template<typename A1>
1736inline QString xi18n(const char *text, const A1 &a1)
1737{
1738 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1739 return kxi18n(text).subs(a1).toString();
1740}
1741template<typename A1, typename A2>
1742inline QString xi18n(const char *text, const A1 &a1, const A2 &a2)
1743{
1744 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1745 return kxi18n(text).subs(a1).subs(a2).toString();
1746}
1747template<typename A1, typename A2, typename A3>
1748inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1749{
1750 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1751 return kxi18n(text).subs(a1).subs(a2).subs(a3).toString();
1752}
1753template<typename A1, typename A2, typename A3, typename A4>
1754inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1755{
1756 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1757 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1758}
1759template<typename A1, typename A2, typename A3, typename A4, typename A5>
1760inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1761{
1762 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1763 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1764}
1765template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1766inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1767{
1768 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1769 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1770}
1771template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1772inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1773{
1774 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1775 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1776}
1777template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1778inline QString xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1779{
1780 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1781 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1782}
1783template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1784inline QString
1785xi18n(const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9)
1786{
1787 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
1788 return kxi18n(text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1789}
1790// <<<<<<< End of markup-aware basic calls
1791
1792// >>>>> Markup-aware context calls
1793// Autogenerated; contact maintainer for batch changes.
1794inline QString xi18nc(const char *context, const char *text)
1795{
1796 return kxi18nc(context, text).toString();
1797}
1798template<typename A1>
1799inline QString xi18nc(const char *context, const char *text, const A1 &a1)
1800{
1801 return kxi18nc(context, text).subs(a1).toString();
1802}
1803template<typename A1, typename A2>
1804inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2)
1805{
1806 return kxi18nc(context, text).subs(a1).subs(a2).toString();
1807}
1808template<typename A1, typename A2, typename A3>
1809inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
1810{
1811 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).toString();
1812}
1813template<typename A1, typename A2, typename A3, typename A4>
1814inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1815{
1816 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1817}
1818template<typename A1, typename A2, typename A3, typename A4, typename A5>
1819inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1820{
1821 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1822}
1823template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1824inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1825{
1826 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1827}
1828template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1829inline QString xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1830{
1831 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1832}
1833template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1834inline QString
1835xi18nc(const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1836{
1837 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1838}
1839template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1840inline QString xi18nc(const char *context,
1841 const char *text,
1842 const A1 &a1,
1843 const A2 &a2,
1844 const A3 &a3,
1845 const A4 &a4,
1846 const A5 &a5,
1847 const A6 &a6,
1848 const A7 &a7,
1849 const A8 &a8,
1850 const A9 &a9)
1851{
1852 return kxi18nc(context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1853}
1854// <<<<< End of markup-aware context calls
1855
1856// >>>>> Markup-aware plural calls
1857// Autogenerated; contact maintainer for batch changes.
1858template<typename A1>
1859inline QString xi18np(const char *singular, const char *plural, const A1 &a1)
1860{
1861 return kxi18np(singular, plural).subs(a1).toString();
1862}
1863template<typename A1, typename A2>
1864inline QString xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1865{
1866 return kxi18np(singular, plural).subs(a1).subs(a2).toString();
1867}
1868template<typename A1, typename A2, typename A3>
1869inline QString xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1870{
1871 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).toString();
1872}
1873template<typename A1, typename A2, typename A3, typename A4>
1874inline QString xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1875{
1876 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1877}
1878template<typename A1, typename A2, typename A3, typename A4, typename A5>
1879inline QString xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1880{
1881 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1882}
1883template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1884inline QString xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1885{
1886 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1887}
1888template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1889inline QString
1890xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
1891{
1892 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1893}
1894template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1895inline QString
1896xi18np(const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
1897{
1898 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1899}
1900template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1901inline QString xi18np(const char *singular,
1902 const char *plural,
1903 const A1 &a1,
1904 const A2 &a2,
1905 const A3 &a3,
1906 const A4 &a4,
1907 const A5 &a5,
1908 const A6 &a6,
1909 const A7 &a7,
1910 const A8 &a8,
1911 const A9 &a9)
1912{
1913 return kxi18np(singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1914}
1915// <<<<< End of markup-aware plural calls
1916
1917// >>>>> Markup-aware context-plural calls
1918// Autogenerated; contact maintainer for batch changes.
1919template<typename A1>
1920inline QString xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1)
1921{
1922 return kxi18ncp(context, singular, plural).subs(a1).toString();
1923}
1924template<typename A1, typename A2>
1925inline QString xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
1926{
1927 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).toString();
1928}
1929template<typename A1, typename A2, typename A3>
1930inline QString xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
1931{
1932 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).toString();
1933}
1934template<typename A1, typename A2, typename A3, typename A4>
1935inline QString xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
1936{
1937 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
1938}
1939template<typename A1, typename A2, typename A3, typename A4, typename A5>
1940inline QString xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
1941{
1942 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
1943}
1944template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
1945inline QString
1946xi18ncp(const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
1947{
1948 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
1949}
1950template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
1951inline QString xi18ncp(const char *context,
1952 const char *singular,
1953 const char *plural,
1954 const A1 &a1,
1955 const A2 &a2,
1956 const A3 &a3,
1957 const A4 &a4,
1958 const A5 &a5,
1959 const A6 &a6,
1960 const A7 &a7)
1961{
1962 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
1963}
1964template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
1965inline QString xi18ncp(const char *context,
1966 const char *singular,
1967 const char *plural,
1968 const A1 &a1,
1969 const A2 &a2,
1970 const A3 &a3,
1971 const A4 &a4,
1972 const A5 &a5,
1973 const A6 &a6,
1974 const A7 &a7,
1975 const A8 &a8)
1976{
1977 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
1978}
1979template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
1980inline QString xi18ncp(const char *context,
1981 const char *singular,
1982 const char *plural,
1983 const A1 &a1,
1984 const A2 &a2,
1985 const A3 &a3,
1986 const A4 &a4,
1987 const A5 &a5,
1988 const A6 &a6,
1989 const A7 &a7,
1990 const A8 &a8,
1991 const A9 &a9)
1992{
1993 return kxi18ncp(context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
1994}
1995// <<<<< End of markup-aware context-plural calls
1996
1997// >>>>> Markup-aware basic calls with domain
1998// Autogenerated; contact maintainer for batch changes.
1999inline QString xi18nd(const char *domain, const char *text)
2000{
2001 return kxi18nd(domain, text).toString();
2002}
2003template<typename A1>
2004inline QString xi18nd(const char *domain, const char *text, const A1 &a1)
2005{
2006 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2007 return kxi18nd(domain, text).subs(a1).toString();
2008}
2009template<typename A1, typename A2>
2010inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2)
2011{
2012 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2013 return kxi18nd(domain, text).subs(a1).subs(a2).toString();
2014}
2015template<typename A1, typename A2, typename A3>
2016inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
2017{
2018 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2019 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).toString();
2020}
2021template<typename A1, typename A2, typename A3, typename A4>
2022inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
2023{
2024 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2025 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
2026}
2027template<typename A1, typename A2, typename A3, typename A4, typename A5>
2028inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
2029{
2030 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2031 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
2032}
2033template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
2034inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
2035{
2036 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2037 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
2038}
2039template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
2040inline QString xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7)
2041{
2042 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2043 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
2044}
2045template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
2046inline QString
2047xi18nd(const char *domain, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8)
2048{
2049 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2050 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
2051}
2052template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
2053inline QString xi18nd(const char *domain,
2054 const char *text,
2055 const A1 &a1,
2056 const A2 &a2,
2057 const A3 &a3,
2058 const A4 &a4,
2059 const A5 &a5,
2060 const A6 &a6,
2061 const A7 &a7,
2062 const A8 &a8,
2063 const A9 &a9)
2064{
2065 STATIC_ASSERT_NOT_LITERAL_STRING(A1)
2066 return kxi18nd(domain, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
2067}
2068// <<<<<<< End of markup-aware basic calls with domain
2069
2070// >>>>> Markup-aware context calls with domain
2071// Autogenerated; contact maintainer for batch changes.
2072inline QString xi18ndc(const char *domain, const char *context, const char *text)
2073{
2074 return kxi18ndc(domain, context, text).toString();
2075}
2076template<typename A1>
2077inline QString xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1)
2078{
2079 return kxi18ndc(domain, context, text).subs(a1).toString();
2080}
2081template<typename A1, typename A2>
2082inline QString xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2)
2083{
2084 return kxi18ndc(domain, context, text).subs(a1).subs(a2).toString();
2085}
2086template<typename A1, typename A2, typename A3>
2087inline QString xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3)
2088{
2089 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).toString();
2090}
2091template<typename A1, typename A2, typename A3, typename A4>
2092inline QString xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
2093{
2094 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).toString();
2095}
2096template<typename A1, typename A2, typename A3, typename A4, typename A5>
2097inline QString xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
2098{
2099 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
2100}
2101template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
2102inline QString
2103xi18ndc(const char *domain, const char *context, const char *text, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
2104{
2105 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
2106}
2107template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
2108inline QString xi18ndc(const char *domain,
2109 const char *context,
2110 const char *text,
2111 const A1 &a1,
2112 const A2 &a2,
2113 const A3 &a3,
2114 const A4 &a4,
2115 const A5 &a5,
2116 const A6 &a6,
2117 const A7 &a7)
2118{
2119 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
2120}
2121template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
2122inline QString xi18ndc(const char *domain,
2123 const char *context,
2124 const char *text,
2125 const A1 &a1,
2126 const A2 &a2,
2127 const A3 &a3,
2128 const A4 &a4,
2129 const A5 &a5,
2130 const A6 &a6,
2131 const A7 &a7,
2132 const A8 &a8)
2133{
2134 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
2135}
2136template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
2137inline QString xi18ndc(const char *domain,
2138 const char *context,
2139 const char *text,
2140 const A1 &a1,
2141 const A2 &a2,
2142 const A3 &a3,
2143 const A4 &a4,
2144 const A5 &a5,
2145 const A6 &a6,
2146 const A7 &a7,
2147 const A8 &a8,
2148 const A9 &a9)
2149{
2150 return kxi18ndc(domain, context, text).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
2151}
2152// <<<<< End of markup-aware context calls with domain
2153
2154// >>>>> Markup-aware plural calls with domain
2155// Autogenerated; contact maintainer for batch changes.
2156template<typename A1>
2157inline QString xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1)
2158{
2159 return kxi18ndp(domain, singular, plural).subs(a1).toString();
2160}
2161template<typename A1, typename A2>
2162inline QString xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
2163{
2164 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).toString();
2165}
2166template<typename A1, typename A2, typename A3>
2167inline QString xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
2168{
2169 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).toString();
2170}
2171template<typename A1, typename A2, typename A3, typename A4>
2172inline QString xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
2173{
2174 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
2175}
2176template<typename A1, typename A2, typename A3, typename A4, typename A5>
2177inline QString xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5)
2178{
2179 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
2180}
2181template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
2182inline QString
2183xi18ndp(const char *domain, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6)
2184{
2185 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
2186}
2187template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
2188inline QString xi18ndp(const char *domain,
2189 const char *singular,
2190 const char *plural,
2191 const A1 &a1,
2192 const A2 &a2,
2193 const A3 &a3,
2194 const A4 &a4,
2195 const A5 &a5,
2196 const A6 &a6,
2197 const A7 &a7)
2198{
2199 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
2200}
2201template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
2202inline QString xi18ndp(const char *domain,
2203 const char *singular,
2204 const char *plural,
2205 const A1 &a1,
2206 const A2 &a2,
2207 const A3 &a3,
2208 const A4 &a4,
2209 const A5 &a5,
2210 const A6 &a6,
2211 const A7 &a7,
2212 const A8 &a8)
2213{
2214 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
2215}
2216template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
2217inline QString xi18ndp(const char *domain,
2218 const char *singular,
2219 const char *plural,
2220 const A1 &a1,
2221 const A2 &a2,
2222 const A3 &a3,
2223 const A4 &a4,
2224 const A5 &a5,
2225 const A6 &a6,
2226 const A7 &a7,
2227 const A8 &a8,
2228 const A9 &a9)
2229{
2230 return kxi18ndp(domain, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
2231}
2232// <<<<< End of markup-aware plural calls with domain
2233
2234// >>>>> Markup-aware context-plural calls with domain
2235// Autogenerated; contact maintainer for batch changes.
2236template<typename A1>
2237inline QString xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1)
2238{
2239 return kxi18ndcp(domain, context, singular, plural).subs(a1).toString();
2240}
2241template<typename A1, typename A2>
2242inline QString xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2)
2243{
2244 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).toString();
2245}
2246template<typename A1, typename A2, typename A3>
2247inline QString xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3)
2248{
2249 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).toString();
2250}
2251template<typename A1, typename A2, typename A3, typename A4>
2252inline QString
2253xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
2254{
2255 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).toString();
2256}
2257template<typename A1, typename A2, typename A3, typename A4, typename A5>
2258inline QString xi18ndcp(const char *domain,
2259 const char *context,
2260 const char *singular,
2261 const char *plural,
2262 const A1 &a1,
2263 const A2 &a2,
2264 const A3 &a3,
2265 const A4 &a4,
2266 const A5 &a5)
2267{
2268 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).toString();
2269}
2270template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6>
2271inline QString xi18ndcp(const char *domain,
2272 const char *context,
2273 const char *singular,
2274 const char *plural,
2275 const A1 &a1,
2276 const A2 &a2,
2277 const A3 &a3,
2278 const A4 &a4,
2279 const A5 &a5,
2280 const A6 &a6)
2281{
2282 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).toString();
2283}
2284template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7>
2285inline QString xi18ndcp(const char *domain,
2286 const char *context,
2287 const char *singular,
2288 const char *plural,
2289 const A1 &a1,
2290 const A2 &a2,
2291 const A3 &a3,
2292 const A4 &a4,
2293 const A5 &a5,
2294 const A6 &a6,
2295 const A7 &a7)
2296{
2297 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).toString();
2298}
2299template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8>
2300inline QString xi18ndcp(const char *domain,
2301 const char *context,
2302 const char *singular,
2303 const char *plural,
2304 const A1 &a1,
2305 const A2 &a2,
2306 const A3 &a3,
2307 const A4 &a4,
2308 const A5 &a5,
2309 const A6 &a6,
2310 const A7 &a7,
2311 const A8 &a8)
2312{
2313 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).toString();
2314}
2315template<typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename A9>
2316inline QString xi18ndcp(const char *domain,
2317 const char *context,
2318 const char *singular,
2319 const char *plural,
2320 const A1 &a1,
2321 const A2 &a2,
2322 const A3 &a3,
2323 const A4 &a4,
2324 const A5 &a5,
2325 const A6 &a6,
2326 const A7 &a7,
2327 const A8 &a8,
2328 const A9 &a9)
2329{
2330 return kxi18ndcp(domain, context, singular, plural).subs(a1).subs(a2).subs(a3).subs(a4).subs(a5).subs(a6).subs(a7).subs(a8).subs(a9).toString();
2331}
2332// <<<<< End of markup-aware context-plural calls with domain
2333
2334#endif // K_DOXYGEN
2335
2336#endif // KLOCALIZEDSTRING_H
2337
2338#ifndef K_DOXYGEN
2339
2340// Outside of include guards, to be able to map and unmap domains
2341// by successive inclusions of this header
2342// preceded with different definitions of TRANSLATION_DOMAIN.
2343#ifdef TRANSLATION_DOMAIN
2344#define i18n(...) i18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2345#define i18nc(...) i18ndc(TRANSLATION_DOMAIN, __VA_ARGS__)
2346#define i18np(...) i18ndp(TRANSLATION_DOMAIN, __VA_ARGS__)
2347#define i18ncp(...) i18ndcp(TRANSLATION_DOMAIN, __VA_ARGS__)
2348#define ki18n(...) ki18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2349#define ki18nc(...) ki18ndc(TRANSLATION_DOMAIN, __VA_ARGS__)
2350#define ki18np(...) ki18ndp(TRANSLATION_DOMAIN, __VA_ARGS__)
2351#define ki18ncp(...) ki18ndcp(TRANSLATION_DOMAIN, __VA_ARGS__)
2352#define tr2i18n(...) tr2i18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2353#define xi18n(...) xi18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2354#define xi18nc(...) xi18ndc(TRANSLATION_DOMAIN, __VA_ARGS__)
2355#define xi18np(...) xi18ndp(TRANSLATION_DOMAIN, __VA_ARGS__)
2356#define xi18ncp(...) xi18ndcp(TRANSLATION_DOMAIN, __VA_ARGS__)
2357#define kxi18n(...) kxi18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2358#define kxi18nc(...) kxi18ndc(TRANSLATION_DOMAIN, __VA_ARGS__)
2359#define kxi18np(...) kxi18ndp(TRANSLATION_DOMAIN, __VA_ARGS__)
2360#define kxi18ncp(...) kxi18ndcp(TRANSLATION_DOMAIN, __VA_ARGS__)
2361#define tr2xi18n(...) tr2xi18nd(TRANSLATION_DOMAIN, __VA_ARGS__)
2362#else
2363#undef i18n
2364#undef i18nc
2365#undef i18np
2366#undef i18ncp
2367#undef ki18n
2368#undef ki18nc
2369#undef ki18np
2370#undef ki18ncp
2371#undef tr2i18n
2372#undef xi18n
2373#undef xi18nc
2374#undef xi18np
2375#undef xi18ncp
2376#undef kxi18n
2377#undef kxi18nc
2378#undef kxi18np
2379#undef kxi18ncp
2380#undef tr2xi18n
2381#endif
2382
2383#endif // K_DOXYGEN
Lazy-initialized variant of KLocalizedString.
Definition klazylocalizedstring.h:51
Class for producing and handling localized messages.
Definition klocalizedstring.h:99
friend KLocalizedString kxi18ncp(const char *context, const char *singular, const char *plural)
Create non-finalized markup-aware translated string.
KLocalizedString subs(double a, int fieldWidth=0, char format='g', int precision=-1, QChar fillChar=QLatin1Char(' ')) const
Substitute a double argument into the message.
KLocalizedString()
Construct an empty message.
KLocalizedString inContext(const QString &key, const QString &value) const
Add dynamic context to the message.
KLocalizedString withDomain(const char *domain) const
Indicate to look for translation in the given domain.
friend KLocalizedString kxi18ndp(const char *domain, const char *singular, const char *plural)
Create non-finalized markup-aware translated string from domain with plural.
KLocalizedString subs(ulong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned long argument into the message.
static QStringList languages()
Get the languages for which translations will be made.
~KLocalizedString()
Destructor.
QString toString() const
Finalize the translation.
friend KLocalizedString kxi18ndc(const char *domain, const char *context, const char *text)
Create non-finalized markup-aware translated string from domain with context.
friend KLocalizedString kxi18ndcp(const char *domain, const char *context, const char *singular, const char *plural)
Create non-finalized markup-aware translated string from domain with context and plural.
friend KLocalizedString ki18ndc(const char *domain, const char *context, const char *text)
Create non-finalized translated string from domain with context.
friend KLocalizedString ki18nd(const char *domain, const char *text)
Create non-finalized translated string from domain.
KLocalizedString(const KLocalizedString &rhs)
Copy constructor.
static void setLanguages(const QStringList &languages)
Set the languages for which translations will be made.
static void clearLanguages()
Clear override languages.
KLocalizedString subs(qulonglong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned long long argument into the message.
KLocalizedString subs(uint a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned int argument into the message.
KLocalizedString withFormat(Kuit::VisualFormat format) const
Indicate to resolve KUIT markup into given visual format.
KLocalizedString subs(QChar a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute a QChar argument into the message.
static void addDomainLocaleDir(const QByteArray &domain, const QString &path)
Load locales for a domain from a specific location This is useful for resources which have their tran...
static bool isApplicationTranslatedInto(const QString &language)
Check whether the translation catalog file in the given language for the set application translation ...
KLocalizedString withLanguages(const QStringList &languages) const
Indicate to look for translation only in given languages.
KLocalizedString ignoreMarkup() const
Do not resolve KUIT markup.
KLocalizedString subs(const QString &a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute a QString argument into the message.
friend KLocalizedString ki18ncp(const char *context, const char *singular, const char *plural)
Create non-finalized translated string with context and plural.
KLocalizedString & operator=(const KLocalizedString &rhs)
Assignment operator.
static QSet< QString > availableApplicationTranslations()
QByteArray untranslatedText() const
Returns the untranslated text.
QString toString(const char *domain) const
Like toString, but look for translation in the given domain.
KLocalizedString subs(long a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute a long argument into the message.
friend KLocalizedString kxi18n(const char *text)
Create non-finalized markup-aware translated string.
static QString removeAcceleratorMarker(const QString &label)
Remove accelerator marker from a UI text label.
QString toString(Kuit::VisualFormat format) const
Like toString, but resolve KUIT markup into given visual format.
bool isEmpty() const
Check whether the message is empty.
static QSet< QString > availableDomainTranslations(const QByteArray &domain)
QString toString(const QStringList &languages) const
Like toString, but look for translation only in given languages.
friend KLocalizedString kxi18nc(const char *context, const char *text)
Create non-finalized markup-aware translated string with context.
KLocalizedString subs(int a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an int argument into the message.
KLocalizedString subs(const KLocalizedString &a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute another KLocalizedString into the message.
KLocalizedString relaxSubs() const
Relax matching between placeholders and arguments.
friend KLocalizedString ki18np(const char *singular, const char *plural)
Create non-finalized translated string with plural.
friend KLocalizedString ki18nc(const char *context, const char *text)
Create non-finalized translated string with context.
static QString localizedFilePath(const QString &filePath)
Find a path to the localized file for the given original path.
friend KLocalizedString kxi18nd(const char *domain, const char *text)
Create non-finalized markup-aware translated string from domain.
friend KLocalizedString ki18n(const char *text)
Create non-finalized translated string.
friend KLocalizedString ki18ndp(const char *domain, const char *singular, const char *plural)
Create non-finalized translated string from domain with plural.
static QByteArray applicationDomain()
Get the application's main translation domain.
static void setApplicationDomain(const char *domain)
Set the given domain as application's main domain.
friend KLocalizedString ki18ndcp(const char *domain, const char *context, const char *singular, const char *plural)
Create non-finalized translated string from domain with context and plural.
KLocalizedString subs(qlonglong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute a long long argument into the message.
friend KLocalizedString kxi18np(const char *singular, const char *plural)
Create non-finalized markup-aware translated string with plural.
KLocalizedString kxi18ncp(const char *context, const char *singular, const char *plural)
Create non-finalized markup-aware translated string.
QString i18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const TYPE &arg...)
Translate a string from domain with context and plural and substitute any arguments.
QString tr2i18nd(const char *domain, const char *text, const char *comment=nullptr)
Like tr2i18n, but look for translation in a specific domain.
Definition klocalizedstring.h:1059
KLocalizedString kxi18ndp(const char *domain, const char *singular, const char *plural)
Create non-finalized markup-aware translated string from domain with plural.
QString xi18np(const char *singular, const char *plural, const TYPE &arg...)
Translate a markup-aware string with plural and substitute any arguments.
QString i18np(const char *singular, const char *plural, const TYPE &arg...)
Translate a string with plural and substitute any arguments.
KLocalizedString kxi18ndc(const char *domain, const char *context, const char *text)
Create non-finalized markup-aware translated string from domain with context.
QString i18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...)
Translate a string from domain with context and substitute any arguments.
KLocalizedString kxi18ndcp(const char *domain, const char *context, const char *singular, const char *plural)
Create non-finalized markup-aware translated string from domain with context and plural.
KLocalizedString ki18ndc(const char *domain, const char *context, const char *text)
Create non-finalized translated string from domain with context.
KLocalizedString ki18nd(const char *domain, const char *text)
Create non-finalized translated string from domain.
QString xi18ncp(const char *context, const char *singular, const char *plural, const TYPE &arg...)
Translate a markup-aware string with context and plural and substitute any arguments.
QString tr2xi18n(const char *text, const char *comment=nullptr)
Like tr2i18n, but when UI strings are KUIT markup-aware.
Definition klocalizedstring.h:1079
QString xi18nc(const char *context, const char *text, const TYPE &arg...)
Translate a markup-aware string with context and substitute any arguments.
QString tr2xi18nd(const char *domain, const char *text, const char *comment=nullptr)
Like tr2xi18n, but look for translation in a specific domain.
Definition klocalizedstring.h:1100
QString i18nc(const char *context, const char *text, const TYPE &arg...)
Translate a string with context and substitute any arguments.
KLocalizedString ki18ncp(const char *context, const char *singular, const char *plural)
Create non-finalized translated string with context and plural.
QString xi18ndp(const char *domain, const char *singular, const char *plural, const TYPE &arg...)
Translate a markup-aware string from domain with plural and substitute any arguments.
QString xi18ndcp(const char *domain, const char *context, const char *singular, const char *plural, const TYPE &arg...)
Translate a markup-aware string from domain with context and plural and substitute any arguments.
QString xi18nd(const char *domain, const char *text, const TYPE &arg...)
Translate a markup-aware string from domain and substitute any arguments.
QString xi18n(const char *text, const TYPE &arg...)
Translate a markup-aware string and substitute any arguments.
QString i18ndp(const char *domain, const char *singular, const char *plural, const TYPE &arg...)
Translate a string from domain with plural and substitute any arguments.
QString i18nd(const char *domain, const char *text, const TYPE &arg...)
Translate a string from domain and substitute any arguments.
KLocalizedString kxi18n(const char *text)
Create non-finalized markup-aware translated string.
QString xi18ndc(const char *domain, const char *context, const char *text, const TYPE &arg...)
Translate a markup-aware string from domain with context and substitute any arguments.
QString tr2i18n(const char *text, const char *comment=nullptr)
Redirect Qt's uic-generated translation calls to Ki18n.
Definition klocalizedstring.h:1038
KLocalizedString kxi18nc(const char *context, const char *text)
Create non-finalized markup-aware translated string with context.
KLocalizedString ki18np(const char *singular, const char *plural)
Create non-finalized translated string with plural.
QString i18n(const char *text, const TYPE &arg...)
Translate a string and substitute any arguments.
KLocalizedString ki18nc(const char *context, const char *text)
Create non-finalized translated string with context.
KLocalizedString kxi18nd(const char *domain, const char *text)
Create non-finalized markup-aware translated string from domain.
QString i18ncp(const char *context, const char *singular, const char *plural, const TYPE &arg...)
Translate a string with context and plural and substitute any arguments.
KLocalizedString ki18n(const char *text)
Create non-finalized translated string.
KLocalizedString ki18ndp(const char *domain, const char *singular, const char *plural)
Create non-finalized translated string from domain with plural.
KLocalizedString ki18ndcp(const char *domain, const char *context, const char *singular, const char *plural)
Create non-finalized translated string from domain with context and plural.
KLocalizedString kxi18np(const char *singular, const char *plural)
Create non-finalized markup-aware translated string with plural.
VisualFormat
Visual formats into which KUIT markup can be resolved.
Definition kuitsetup.h:27