File indexing completed on 2024-05-12 05:15:01
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 * 0006 */ 0007 0008 #include "grantleeki18nlocalizer_p.h" 0009 #include "kcalutils_debug.h" 0010 0011 #include <KTextTemplate/SafeString> 0012 #include <QLocale> 0013 0014 #include <KLocalizedString> 0015 0016 GrantleeKi18nLocalizer::GrantleeKi18nLocalizer() 0017 : KTextTemplate::QtLocalizer() 0018 { 0019 } 0020 0021 GrantleeKi18nLocalizer::~GrantleeKi18nLocalizer() 0022 { 0023 } 0024 0025 QString GrantleeKi18nLocalizer::processArguments(const KLocalizedString &kstr, const QVariantList &arguments) const 0026 { 0027 KLocalizedString str = kstr; 0028 for (auto iter = arguments.cbegin(), end = arguments.cend(); iter != end; ++iter) { 0029 switch (iter->userType()) { 0030 case QMetaType::QString: 0031 str = str.subs(iter->toString()); 0032 break; 0033 case QMetaType::Int: 0034 str = str.subs(iter->toInt()); 0035 break; 0036 case QMetaType::UInt: 0037 str = str.subs(iter->toUInt()); 0038 break; 0039 case QMetaType::LongLong: 0040 str = str.subs(iter->toLongLong()); 0041 break; 0042 case QMetaType::ULongLong: 0043 str = str.subs(iter->toULongLong()); 0044 break; 0045 case QMetaType::Char: 0046 str = str.subs(iter->toChar()); 0047 break; 0048 case QMetaType::Double: 0049 str = str.subs(iter->toDouble()); 0050 break; 0051 case QMetaType::User: 0052 default: 0053 if (iter->canConvert<KTextTemplate::SafeString>()) { 0054 str = str.subs(iter->value<KTextTemplate::SafeString>().get()); 0055 break; 0056 } else { 0057 qCWarning(KCALUTILS_LOG) << "Unknown type" << iter->typeName() << "(" << iter->userType() << ")"; 0058 break; 0059 } 0060 } 0061 } 0062 0063 // Return localized in the currently active locale 0064 return str.toString("libkcalutils6"); 0065 } 0066 0067 QString GrantleeKi18nLocalizer::localizeContextString(const QString &string, const QString &context, const QVariantList &arguments) const 0068 { 0069 const KLocalizedString str = kxi18nc(qPrintable(context), qPrintable(string)); 0070 return processArguments(str, arguments); 0071 } 0072 0073 QString GrantleeKi18nLocalizer::localizeString(const QString &string, const QVariantList &arguments) const 0074 { 0075 const KLocalizedString str = kxi18n(qPrintable(string)); 0076 return processArguments(str, arguments); 0077 } 0078 0079 QString GrantleeKi18nLocalizer::localizePluralContextString(const QString &string, 0080 const QString &pluralForm, 0081 const QString &context, 0082 const QVariantList &arguments) const 0083 { 0084 const KLocalizedString str = kxi18ncp(qPrintable(context), qPrintable(string), qPrintable(pluralForm)); 0085 return processArguments(str, arguments); 0086 } 0087 0088 QString GrantleeKi18nLocalizer::localizePluralString(const QString &string, const QString &pluralForm, const QVariantList &arguments) const 0089 { 0090 const KLocalizedString str = kxi18np(qPrintable(string), qPrintable(pluralForm)); 0091 return processArguments(str, arguments); 0092 } 0093 0094 QString GrantleeKi18nLocalizer::localizeMonetaryValue(qreal value, const QString ¤cySymbol) const 0095 { 0096 return QLocale(currentLocale()).toCurrencyString(value, currencySymbol); 0097 }