File indexing completed on 2024-06-23 03:53:42
0001 /* 0002 SPDX-FileCopyrightText: 2014 Kevin Ottens <ervin@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 // Undefine this because we don't want our i18n*() method names to be turned into i18nd*() 0008 #undef TRANSLATION_DOMAIN 0009 0010 #include "translationcontext.h" 0011 0012 #include <QDebug> 0013 0014 #include <KLocalizedString> 0015 0016 TranslationContext::TranslationContext(QObject *parent) 0017 : QObject(parent) 0018 { 0019 } 0020 0021 TranslationContext::~TranslationContext() 0022 { 0023 } 0024 0025 QString TranslationContext::domain() const 0026 { 0027 return m_domain; 0028 } 0029 0030 void TranslationContext::setDomain(const QString &domain) 0031 { 0032 if (m_domain == domain) { 0033 return; 0034 } 0035 0036 m_domain = domain; 0037 Q_EMIT domainChanged(domain); 0038 } 0039 0040 QString TranslationContext::i18n(const QString &message, 0041 const QString ¶m1, 0042 const QString ¶m2, 0043 const QString ¶m3, 0044 const QString ¶m4, 0045 const QString ¶m5, 0046 const QString ¶m6, 0047 const QString ¶m7, 0048 const QString ¶m8, 0049 const QString ¶m9, 0050 const QString ¶m10) const 0051 { 0052 if (message.isNull()) { 0053 qWarning() << "i18n() needs at least one parameter"; 0054 return QString(); 0055 } 0056 0057 KLocalizedString trMessage = ki18nd(m_domain.toUtf8().constData(), message.toUtf8().constData()); 0058 0059 if (!param1.isNull()) { 0060 trMessage = trMessage.subs(param1); 0061 } 0062 if (!param2.isNull()) { 0063 trMessage = trMessage.subs(param2); 0064 } 0065 if (!param3.isNull()) { 0066 trMessage = trMessage.subs(param3); 0067 } 0068 if (!param4.isNull()) { 0069 trMessage = trMessage.subs(param4); 0070 } 0071 if (!param5.isNull()) { 0072 trMessage = trMessage.subs(param5); 0073 } 0074 if (!param6.isNull()) { 0075 trMessage = trMessage.subs(param6); 0076 } 0077 if (!param7.isNull()) { 0078 trMessage = trMessage.subs(param7); 0079 } 0080 if (!param8.isNull()) { 0081 trMessage = trMessage.subs(param8); 0082 } 0083 if (!param9.isNull()) { 0084 trMessage = trMessage.subs(param9); 0085 } 0086 if (!param10.isNull()) { 0087 trMessage = trMessage.subs(param10); 0088 } 0089 0090 return trMessage.toString(); 0091 } 0092 0093 QString TranslationContext::i18nc(const QString &context, 0094 const QString &message, 0095 const QString ¶m1, 0096 const QString ¶m2, 0097 const QString ¶m3, 0098 const QString ¶m4, 0099 const QString ¶m5, 0100 const QString ¶m6, 0101 const QString ¶m7, 0102 const QString ¶m8, 0103 const QString ¶m9, 0104 const QString ¶m10) const 0105 { 0106 if (context.isNull() || message.isNull()) { 0107 qWarning() << "i18nc() needs at least two arguments"; 0108 return QString(); 0109 } 0110 0111 KLocalizedString trMessage = ki18ndc(m_domain.toUtf8().constData(), context.toUtf8().constData(), message.toUtf8().constData()); 0112 0113 if (!param1.isNull()) { 0114 trMessage = trMessage.subs(param1); 0115 } 0116 if (!param2.isNull()) { 0117 trMessage = trMessage.subs(param2); 0118 } 0119 if (!param3.isNull()) { 0120 trMessage = trMessage.subs(param3); 0121 } 0122 if (!param4.isNull()) { 0123 trMessage = trMessage.subs(param4); 0124 } 0125 if (!param5.isNull()) { 0126 trMessage = trMessage.subs(param5); 0127 } 0128 if (!param6.isNull()) { 0129 trMessage = trMessage.subs(param6); 0130 } 0131 if (!param7.isNull()) { 0132 trMessage = trMessage.subs(param7); 0133 } 0134 if (!param8.isNull()) { 0135 trMessage = trMessage.subs(param8); 0136 } 0137 if (!param9.isNull()) { 0138 trMessage = trMessage.subs(param9); 0139 } 0140 if (!param10.isNull()) { 0141 trMessage = trMessage.subs(param10); 0142 } 0143 0144 return trMessage.toString(); 0145 } 0146 0147 QString TranslationContext::i18np(const QString &singular, 0148 const QString &plural, 0149 const QString ¶m1, 0150 const QString ¶m2, 0151 const QString ¶m3, 0152 const QString ¶m4, 0153 const QString ¶m5, 0154 const QString ¶m6, 0155 const QString ¶m7, 0156 const QString ¶m8, 0157 const QString ¶m9, 0158 const QString ¶m10) const 0159 { 0160 if (singular.isNull() || plural.isNull()) { 0161 qWarning() << "i18np() needs at least two arguments"; 0162 return QString(); 0163 } 0164 0165 KLocalizedString trMessage = ki18ndp(m_domain.toUtf8().constData(), singular.toUtf8().constData(), plural.toUtf8().constData()); 0166 0167 if (!param1.isNull()) { 0168 bool ok; 0169 int num = param1.toInt(&ok); 0170 if (ok) { 0171 trMessage = trMessage.subs(num); 0172 } else { 0173 trMessage = trMessage.subs(param1); 0174 } 0175 } 0176 if (!param2.isNull()) { 0177 trMessage = trMessage.subs(param2); 0178 } 0179 if (!param3.isNull()) { 0180 trMessage = trMessage.subs(param3); 0181 } 0182 if (!param4.isNull()) { 0183 trMessage = trMessage.subs(param4); 0184 } 0185 if (!param5.isNull()) { 0186 trMessage = trMessage.subs(param5); 0187 } 0188 if (!param6.isNull()) { 0189 trMessage = trMessage.subs(param6); 0190 } 0191 if (!param7.isNull()) { 0192 trMessage = trMessage.subs(param7); 0193 } 0194 if (!param8.isNull()) { 0195 trMessage = trMessage.subs(param8); 0196 } 0197 if (!param9.isNull()) { 0198 trMessage = trMessage.subs(param9); 0199 } 0200 if (!param10.isNull()) { 0201 trMessage = trMessage.subs(param10); 0202 } 0203 0204 return trMessage.toString(); 0205 } 0206 0207 QString TranslationContext::i18ncp(const QString &context, 0208 const QString &singular, 0209 const QString &plural, 0210 const QString ¶m1, 0211 const QString ¶m2, 0212 const QString ¶m3, 0213 const QString ¶m4, 0214 const QString ¶m5, 0215 const QString ¶m6, 0216 const QString ¶m7, 0217 const QString ¶m8, 0218 const QString ¶m9, 0219 const QString ¶m10) const 0220 { 0221 if (context.isNull() || singular.isNull() || plural.isNull()) { 0222 qWarning() << "i18ncp() needs at least three arguments"; 0223 return QString(); 0224 } 0225 0226 KLocalizedString trMessage = 0227 ki18ndcp(m_domain.toUtf8().constData(), context.toUtf8().constData(), singular.toUtf8().constData(), plural.toUtf8().constData()); 0228 0229 if (!param1.isNull()) { 0230 bool ok; 0231 int num = param1.toInt(&ok); 0232 if (ok) { 0233 trMessage = trMessage.subs(num); 0234 } else { 0235 trMessage = trMessage.subs(param1); 0236 } 0237 } 0238 if (!param2.isNull()) { 0239 trMessage = trMessage.subs(param2); 0240 } 0241 if (!param3.isNull()) { 0242 trMessage = trMessage.subs(param3); 0243 } 0244 if (!param4.isNull()) { 0245 trMessage = trMessage.subs(param4); 0246 } 0247 if (!param5.isNull()) { 0248 trMessage = trMessage.subs(param5); 0249 } 0250 if (!param6.isNull()) { 0251 trMessage = trMessage.subs(param6); 0252 } 0253 if (!param7.isNull()) { 0254 trMessage = trMessage.subs(param7); 0255 } 0256 if (!param8.isNull()) { 0257 trMessage = trMessage.subs(param8); 0258 } 0259 if (!param9.isNull()) { 0260 trMessage = trMessage.subs(param9); 0261 } 0262 if (!param10.isNull()) { 0263 trMessage = trMessage.subs(param10); 0264 } 0265 0266 return trMessage.toString(); 0267 } 0268 0269 #include "moc_translationcontext.cpp"