File indexing completed on 2024-04-28 11:40:04
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"