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 &param1,
0042                                  const QString &param2,
0043                                  const QString &param3,
0044                                  const QString &param4,
0045                                  const QString &param5,
0046                                  const QString &param6,
0047                                  const QString &param7,
0048                                  const QString &param8,
0049                                  const QString &param9,
0050                                  const QString &param10) 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 &param1,
0096                                   const QString &param2,
0097                                   const QString &param3,
0098                                   const QString &param4,
0099                                   const QString &param5,
0100                                   const QString &param6,
0101                                   const QString &param7,
0102                                   const QString &param8,
0103                                   const QString &param9,
0104                                   const QString &param10) 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 &param1,
0150                                   const QString &param2,
0151                                   const QString &param3,
0152                                   const QString &param4,
0153                                   const QString &param5,
0154                                   const QString &param6,
0155                                   const QString &param7,
0156                                   const QString &param8,
0157                                   const QString &param9,
0158                                   const QString &param10) 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 &param1,
0211                                    const QString &param2,
0212                                    const QString &param3,
0213                                    const QString &param4,
0214                                    const QString &param5,
0215                                    const QString &param6,
0216                                    const QString &param7,
0217                                    const QString &param8,
0218                                    const QString &param9,
0219                                    const QString &param10) 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"