File indexing completed on 2024-04-21 03:54:23

0001 /*
0002     SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 #include "klocalizedtranslator.h"
0007 #include "klocalizedstring.h"
0008 
0009 // Qt
0010 #include <QMetaObject>
0011 #include <QMetaProperty>
0012 
0013 class KLocalizedTranslatorPrivate
0014 {
0015 public:
0016     QString translationDomain;
0017     QSet<QString> monitoredContexts;
0018 };
0019 
0020 KLocalizedTranslator::KLocalizedTranslator(QObject *parent)
0021     : QTranslator(parent)
0022     , d(new KLocalizedTranslatorPrivate)
0023 {
0024 }
0025 
0026 KLocalizedTranslator::~KLocalizedTranslator()
0027 {
0028 }
0029 
0030 void KLocalizedTranslator::setTranslationDomain(const QString &translationDomain)
0031 {
0032     d->translationDomain = translationDomain;
0033 }
0034 
0035 void KLocalizedTranslator::addContextToMonitor(const QString &context)
0036 {
0037     d->monitoredContexts.insert(context);
0038 }
0039 
0040 void KLocalizedTranslator::removeContextToMonitor(const QString &context)
0041 {
0042     d->monitoredContexts.remove(context);
0043 }
0044 
0045 QString KLocalizedTranslator::translate(const char *context, const char *sourceText, const char *disambiguation, int n) const
0046 {
0047     if (d->translationDomain.isEmpty() || !d->monitoredContexts.contains(QString::fromUtf8(context))) {
0048         return QTranslator::translate(context, sourceText, disambiguation, n);
0049     }
0050     if (qstrlen(disambiguation) == 0) {
0051         return ki18nd(d->translationDomain.toUtf8().constData(), sourceText).toString();
0052     } else {
0053         return ki18ndc(d->translationDomain.toUtf8().constData(), disambiguation, sourceText).toString();
0054     }
0055 }
0056 
0057 #include "moc_klocalizedtranslator.cpp"