KI18n 5.109.0
klazylocalizedstring.h
1/*
2 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
3 SPDX-License-Identifier: LGPL-2.0-or-later
4*/
5
6#ifndef KLAZYLOCALIZEDSTRING_H
7#define KLAZYLOCALIZEDSTRING_H
8
9#include "klocalizedstring.h"
10
11#include <cstddef>
12
51{
52public:
63 constexpr inline KLazyLocalizedString() = default;
64
71 Q_REQUIRED_RESULT inline operator KLocalizedString() const
72 {
73 if (!m_text) {
74 return KLocalizedString();
75 }
76#ifdef TRANSLATION_DOMAIN
77 return KLocalizedString(TRANSLATION_DOMAIN, m_context, m_text, m_plural, m_markupAware);
78#else
79 return KLocalizedString(nullptr, m_context, m_text, m_plural, m_markupAware);
80#endif
81 }
82
95 Q_REQUIRED_RESULT constexpr inline bool isEmpty() const
96 {
97 return (m_text == nullptr) || (m_text[0] == '\0');
98 }
99
101 Q_REQUIRED_RESULT constexpr inline const char *untranslatedText() const
102 {
103 return m_text;
104 }
105
116 Q_REQUIRED_RESULT inline QString toString() const
117 {
118 return this->operator KLocalizedString().toString();
119 }
120
130 Q_REQUIRED_RESULT inline QString toString(const QStringList &languages) const
131 {
132 return this->operator KLocalizedString().toString(languages);
133 }
134
141 Q_REQUIRED_RESULT inline QString toString(const char *domain) const
142 {
143 return this->operator KLocalizedString().toString(domain);
144 }
145
155 Q_REQUIRED_RESULT inline QString toString(Kuit::VisualFormat format) const
156 {
157 return this->operator KLocalizedString().toString(format);
158 }
159
166 Q_REQUIRED_RESULT inline KLocalizedString withLanguages(const QStringList &languages) const
167 {
168 return this->operator KLocalizedString().withLanguages(languages);
169 }
170
177 Q_REQUIRED_RESULT inline KLocalizedString withDomain(const char *domain) const
178 {
179 return this->operator KLocalizedString().withDomain(domain);
180 }
181
190 Q_REQUIRED_RESULT inline KLocalizedString withFormat(Kuit::VisualFormat format) const
191 {
192 return this->operator KLocalizedString().withFormat(format);
193 }
194
207 Q_REQUIRED_RESULT inline KLocalizedString subs(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
208 {
209 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
210 }
211
224 Q_REQUIRED_RESULT inline KLocalizedString subs(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
225 {
226 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
227 }
228
241 Q_REQUIRED_RESULT inline KLocalizedString subs(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
242 {
243 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
244 }
245
258 Q_REQUIRED_RESULT inline KLocalizedString subs(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
259 {
260 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
261 }
262
275 Q_REQUIRED_RESULT inline KLocalizedString subs(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
276 {
277 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
278 }
279
292 Q_REQUIRED_RESULT inline KLocalizedString subs(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
293 {
294 return this->operator KLocalizedString().subs(a, fieldWidth, base, fillChar);
295 }
308 Q_REQUIRED_RESULT inline KLocalizedString subs(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const
309 {
310 return this->operator KLocalizedString().subs(a, fieldWidth, format, precision, fillChar);
311 }
312
323 Q_REQUIRED_RESULT inline KLocalizedString subs(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
324 {
325 return this->operator KLocalizedString().subs(a, fieldWidth, fillChar);
326 }
327
338 Q_REQUIRED_RESULT inline KLocalizedString subs(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
339 {
340 return this->operator KLocalizedString().subs(a, fieldWidth, fillChar);
341 }
342
353 Q_REQUIRED_RESULT inline KLocalizedString subs(const KLocalizedString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
354 {
355 return this->operator KLocalizedString().subs(a, fieldWidth, fillChar);
356 }
357
367 Q_REQUIRED_RESULT inline KLocalizedString inContext(const QString &key, const QString &value) const
368 {
369 return this->operator KLocalizedString().inContext(key, value);
370 }
371
389 Q_REQUIRED_RESULT inline KLocalizedString relaxSubs() const
390 {
391 return this->operator KLocalizedString().relaxSubs();
392 }
393
404 Q_REQUIRED_RESULT inline KLocalizedString ignoreMarkup() const
405 {
406 return this->operator KLocalizedString().ignoreMarkup();
407 }
408
409private:
410 template<std::size_t TextSize>
411 friend inline constexpr KLazyLocalizedString kli18n(const char (&text)[TextSize]);
412 template<std::size_t ContextSize, std::size_t TextSize>
413 friend constexpr inline KLazyLocalizedString kli18nc(const char (&context)[ContextSize], const char (&text)[TextSize]);
414 template<std::size_t SingularSize, std::size_t PluralSize>
415 friend constexpr inline KLazyLocalizedString kli18np(const char (&singular)[SingularSize], const char (&plural)[PluralSize]);
416 template<std::size_t ContextSize, std::size_t SingularSize, std::size_t PluralSize>
417 friend constexpr inline KLazyLocalizedString
418 kli18ncp(const char (&context)[ContextSize], const char (&singular)[SingularSize], const char (&plural)[PluralSize]);
419 template<std::size_t TextSize>
420 friend constexpr inline KLazyLocalizedString klxi18n(const char (&text)[TextSize]);
421 template<std::size_t ContextSize, std::size_t TextSize>
422 friend constexpr inline KLazyLocalizedString klxi18nc(const char (&context)[ContextSize], const char (&text)[TextSize]);
423 template<std::size_t SingularSize, std::size_t PluralSize>
424 friend constexpr inline KLazyLocalizedString klxi18np(const char (&singular)[SingularSize], const char (&plural)[PluralSize]);
425 template<std::size_t ContextSize, std::size_t SingularSize, std::size_t PluralSize>
426 friend constexpr inline KLazyLocalizedString
427 klxi18ncp(const char (&context)[ContextSize], const char (&singular)[SingularSize], const char (&plural)[PluralSize]);
428
429 constexpr inline KLazyLocalizedString(const char *context, const char *text, const char *plural, bool markupAware)
430 : m_context(context)
431 , m_text(text)
432 , m_plural(plural)
433 , m_markupAware(markupAware)
434 {
435 }
436
437 const char *m_context = nullptr;
438 const char *m_text = nullptr;
439 const char *m_plural = nullptr;
440 bool m_markupAware = false;
441};
442
450template<std::size_t TextSize>
451constexpr inline KLazyLocalizedString kli18n(const char (&text)[TextSize])
452{
453 return KLazyLocalizedString(nullptr, text, nullptr, false);
454}
455
464template<std::size_t ContextSize, std::size_t TextSize>
465constexpr inline KLazyLocalizedString kli18nc(const char (&context)[ContextSize], const char (&text)[TextSize])
466{
467 return KLazyLocalizedString(context, text, nullptr, false);
468}
469
478template<std::size_t SingularSize, std::size_t PluralSize>
479constexpr inline KLazyLocalizedString kli18np(const char (&singular)[SingularSize], const char (&plural)[PluralSize])
480{
481 return KLazyLocalizedString(nullptr, singular, plural, false);
482}
483
493template<std::size_t ContextSize, std::size_t SingularSize, std::size_t PluralSize>
494constexpr inline KLazyLocalizedString kli18ncp(const char (&context)[ContextSize], const char (&singular)[SingularSize], const char (&plural)[PluralSize])
495{
496 return KLazyLocalizedString(context, singular, plural, false);
497}
498
506template<std::size_t TextSize>
507constexpr inline KLazyLocalizedString klxi18n(const char (&text)[TextSize])
508{
509 return KLazyLocalizedString(nullptr, text, nullptr, true);
510}
511
520template<std::size_t ContextSize, std::size_t TextSize>
521constexpr inline KLazyLocalizedString klxi18nc(const char (&context)[ContextSize], const char (&text)[TextSize])
522{
523 return KLazyLocalizedString(context, text, nullptr, true);
524}
525
534template<std::size_t SingularSize, std::size_t PluralSize>
535constexpr inline KLazyLocalizedString klxi18np(const char (&singular)[SingularSize], const char (&plural)[PluralSize])
536{
537 return KLazyLocalizedString(nullptr, singular, plural, true);
538}
539
549template<std::size_t ContextSize, std::size_t SingularSize, std::size_t PluralSize>
550constexpr inline KLazyLocalizedString klxi18ncp(const char (&context)[ContextSize], const char (&singular)[SingularSize], const char (&plural)[PluralSize])
551{
552 return KLazyLocalizedString(context, singular, plural, true);
553}
554
555#endif // KLAZYLOCALIZEDSTRING_H
Lazy-initialized variant of KLocalizedString.
Definition klazylocalizedstring.h:51
KLocalizedString withLanguages(const QStringList &languages) const
Indicate to look for translation only in given languages.
Definition klazylocalizedstring.h:166
constexpr const char * untranslatedText() const
Returns the raw untranslated text as passed to kli18n*.
Definition klazylocalizedstring.h:101
KLocalizedString subs(qulonglong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned long long argument into the message.
Definition klazylocalizedstring.h:292
constexpr KLazyLocalizedString()=default
Construct an empty message.
QString toString() const
Finalize the translation.
Definition klazylocalizedstring.h:116
KLocalizedString subs(int a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an int argument into the message.
Definition klazylocalizedstring.h:207
KLocalizedString subs(qlonglong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute a long long argument into the message.
Definition klazylocalizedstring.h:275
KLocalizedString subs(const KLocalizedString &a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute another KLocalizedString into the message.
Definition klazylocalizedstring.h:353
KLocalizedString withFormat(Kuit::VisualFormat format) const
Indicate to resolve KUIT markup into given visual format.
Definition klazylocalizedstring.h:190
KLocalizedString subs(const QString &a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute a QString argument into the message.
Definition klazylocalizedstring.h:338
KLocalizedString subs(long a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute a long argument into the message.
Definition klazylocalizedstring.h:241
KLocalizedString subs(uint a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned int argument into the message.
Definition klazylocalizedstring.h:224
QString toString(const char *domain) const
Like toString(), but look for translation in the given domain.
Definition klazylocalizedstring.h:141
QString toString(const QStringList &languages) const
Like toString(), but look for translation only in given languages.
Definition klazylocalizedstring.h:130
KLocalizedString subs(double a, int fieldWidth=0, char format='g', int precision=-1, QChar fillChar=QLatin1Char(' ')) const
Substitute a double argument into the message.
Definition klazylocalizedstring.h:308
KLocalizedString subs(ulong a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an unsigned long argument into the message.
Definition klazylocalizedstring.h:258
constexpr bool isEmpty() const
Check whether the message is empty.
Definition klazylocalizedstring.h:95
KLocalizedString inContext(const QString &key, const QString &value) const
Add dynamic context to the message.
Definition klazylocalizedstring.h:367
KLocalizedString relaxSubs() const
Relax matching between placeholders and arguments.
Definition klazylocalizedstring.h:389
KLocalizedString ignoreMarkup() const
Do not resolve KUIT markup.
Definition klazylocalizedstring.h:404
QString toString(Kuit::VisualFormat format) const
Like toString(), but resolve KUIT markup into given visual format.
Definition klazylocalizedstring.h:155
KLocalizedString subs(QChar a, int fieldWidth=0, QChar fillChar=QLatin1Char(' ')) const
Substitute a QChar argument into the message.
Definition klazylocalizedstring.h:323
KLocalizedString withDomain(const char *domain) const
Indicate to look for translation in the given domain.
Definition klazylocalizedstring.h:177
Class for producing and handling localized messages.
Definition klocalizedstring.h:99
KLocalizedString inContext(const QString &key, const QString &value) const
Add dynamic context to the message.
KLocalizedString withDomain(const char *domain) const
Indicate to look for translation in the given domain.
QString toString() const
Finalize the translation.
KLocalizedString withFormat(Kuit::VisualFormat format) const
Indicate to resolve KUIT markup into given visual format.
KLocalizedString withLanguages(const QStringList &languages) const
Indicate to look for translation only in given languages.
KLocalizedString ignoreMarkup() const
Do not resolve KUIT markup.
KLocalizedString subs(int a, int fieldWidth=0, int base=10, QChar fillChar=QLatin1Char(' ')) const
Substitute an int argument into the message.
KLocalizedString relaxSubs() const
Relax matching between placeholders and arguments.
VisualFormat
Visual formats into which KUIT markup can be resolved.
Definition kuitsetup.h:27