21#include "nulllocalizer_p.h"
23#include <QtCore/QDateTime>
27NullLocalizer::NullLocalizer() {}
29NullLocalizer::~NullLocalizer() {}
31QString NullLocalizer::localizeDate(
const QDate &date,
32 QLocale::FormatType formatType)
const
35 return date.toString();
38QString NullLocalizer::localizeTime(
const QTime &time,
39 QLocale::FormatType formatType)
const
42 return time.toString();
45QString NullLocalizer::localizeDateTime(
const QDateTime &dateTime,
46 QLocale::FormatType formatType)
const
49 return dateTime.toString();
52QString NullLocalizer::localizeNumber(
int number)
const
54 return QString::number(number);
57QString NullLocalizer::localizeNumber(qreal number)
const
59 return QString::number(number);
62QString NullLocalizer::localizeMonetaryValue(qreal value,
63 const QString ¤cyCode)
const
65 Q_UNUSED(currencyCode)
66 return QString::number(value);
69static void replacePercentN(
QString *result,
int n)
74 while ((percentPos = result->indexOf(QLatin1Char(
'%'), percentPos + len))
78 if (result->at(percentPos + len) == QLatin1Char(
'L')) {
80 fmt = QStringLiteral(
"%L1");
82 fmt = QStringLiteral(
"%1");
84 if (result->at(percentPos + len) == QLatin1Char(
'n')) {
87 result->replace(percentPos, len, fmt);
95 const QVariantList &arguments)
98 Q_FOREACH (
const QVariant &arg, arguments) {
99 if (arg.userType() == qMetaTypeId<int>())
100 string =
string.arg(arg.value<
int>());
101 else if (arg.userType() == qMetaTypeId<double>())
102 string =
string.arg(arg.value<
double>());
103 else if (arg.userType() == qMetaTypeId<QDateTime>())
104 string =
string.arg(arg.toDateTime().toString());
106 string =
string.arg(arg.toString());
112NullLocalizer::localizeContextString(
const QString &
string,
114 const QVariantList &arguments)
const
117 return substituteArguments(
string, arguments);
120QString NullLocalizer::localizePluralContextString(
122 const QVariantList &_arguments)
const
125 const auto count = _arguments.first().value<
int>();
126 auto arguments = _arguments;
127 auto string = _string;
128 auto pluralForm = _pluralForm;
129 if (_string.contains(QStringLiteral(
"%n"))) {
130 arguments.removeFirst();
131 replacePercentN(&
string, count);
132 replacePercentN(&pluralForm, count);
134 return count > 0 ? substituteArguments(pluralForm, arguments)
135 : substituteArguments(string, arguments);
139 const QVariantList &arguments)
const
141 return substituteArguments(
string, arguments);
145NullLocalizer::localizePluralString(
const QString &_string,
147 const QVariantList &_arguments)
const
149 const auto count = _arguments.first().value<
int>();
150 auto arguments = _arguments;
151 auto string = _string;
152 auto pluralForm = _pluralForm;
153 if (_string.contains(QStringLiteral(
"%n"))) {
154 arguments.removeFirst();
155 replacePercentN(&
string, count);
156 replacePercentN(&pluralForm, count);
158 return count > 0 ? substituteArguments(pluralForm, arguments)
159 : substituteArguments(string, arguments);
164void NullLocalizer::pushLocale(
const QString &localeName)
169void NullLocalizer::popLocale() {}
171void NullLocalizer::loadCatalog(
const QString &path,
const QString &catalog)
177void NullLocalizer::unloadCatalog(
const QString &catalog) { Q_UNUSED(catalog) }
The Cutelee namespace holds all public Cutelee API.