KLazyLocalizedString Class
Lazy-initialized variant of KLocalizedString. More...
Header: | #include <KLazyLocalizedString> |
CMake: | find_package(KF6 REQUIRED COMPONENTS I18n) target_link_libraries(mytarget PRIVATE KF6::I18n) |
Since: | 5.89 |
Public Functions
KLazyLocalizedString() | |
KLocalizedString | ignoreMarkup() const |
KLocalizedString | inContext(const QString &key, const QString &value) const |
bool | isEmpty() const |
KLocalizedString | relaxSubs() const |
KLocalizedString | subs(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(const KLocalizedString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const |
KLocalizedString | subs(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const |
QString | toString() const |
QString | toString(Kuit::VisualFormat format) const |
QString | toString(const QStringList &languages) const |
QString | toString(const char *domain) const |
const char * | untranslatedText() const |
KLocalizedString | withDomain(const char *domain) const |
KLocalizedString | withFormat(Kuit::VisualFormat format) const |
KLocalizedString | withLanguages(const QStringList &languages) const |
KLocalizedString | operator KLocalizedString() const |
Related Non-Members
(since 5.89) KLazyLocalizedString | kli18n(const char *text) |
(since 5.89) KLazyLocalizedString | kli18nc(const char *context, const char *text) |
(since 5.89) KLazyLocalizedString | kli18ncp(const char *context, const char *singular, const char *plural) |
(since 5.89) KLazyLocalizedString | kli18np(const char *singular, const char *plural) |
(since 5.89) KLazyLocalizedString | klxi18n(const char *text) |
(since 5.89) KLazyLocalizedString | klxi18nc(const char *context, const char *text) |
(since 5.89) KLazyLocalizedString | klxi18ncp(const char *context, const char *singular, const char *plural) |
(since 5.89) KLazyLocalizedString | klxi18np(const char *singular, const char *plural) |
Detailed Description
This is a safer replacement for the I18N_NOOP set of macros and allows marking strings for extraction without runtime-initializing KLocalizedString instances, for storing in static data tables.
Instances of KLazyLocalizedString are not created directly, unless they should be empty. Instead they have to be obtained via the kli18n* functions (similar to KLocalizedString and the ki18n* functions).
Example usage in a static message table:
struct { MyClass::VehicleType type; KLazyLocalizedString msg; } static constexpr const vehicle_msg_table[] = { { MyClass::Train, kli18np("%1 train", "%1 trains") }, { MyClass::Bus, kli18ncp("the vehicle, not the USB one", "%1 bus", "%1 buses") }, ... }; ... const auto it = std::find_if(std::begin(vehicle_msg_table), std::end(vehicle_msg_table), [vehicleType](const auto &m) { return m.type == vehicleType; }); QString translatedMessage = (*it).msg.subs(vehicleCount).toString();
Note: KLazyLocalizedString is primarily meant for storage in e.g. message tables, not for use in API, especially not across translation domains. This is due to it not carrying the translation domain in which it was created, but using the active translation domain at the point of converting to a KLocalizedString.
Member Function Documentation
[constexpr noexcept]
KLazyLocalizedString::KLazyLocalizedString()
Construct an empty message.
Direct construction is used when e.g. a KLazyLocalizedString field in a data table needs to be set, but there is not message to be used. Directly constructed instances are not valid for finalization by toString methods.
See also isEmpty.
KLocalizedString KLazyLocalizedString::ignoreMarkup() const
Do not resolve KUIT markup.
If the message is markup-aware (constructed by one of xi18n calls), this function can be used to make it non-markup-aware. This may be useful for debugging markup.
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::inContext(const QString &key, const QString &value) const
Add dynamic context to the message.
See dyn_ctxt for use cases.
key context key
value context value
Returns updated KLocalizedString
[constexpr]
bool KLazyLocalizedString::isEmpty() const
Check whether the message is empty.
The message is considered empty if the object was constructed via the default constructor.
Empty messages are not valid for finalization. The behavior of calling toString() on them is undefined. In debug mode, an error mark may appear in the returned string.
Returns true
if the message is empty, false
otherwise
KLocalizedString KLazyLocalizedString::relaxSubs() const
Relax matching between placeholders and arguments.
Normally the placeholders should start from %1 and have no gaps, and on finalization there must be exactly as many arguments supplied through subs methods as there are unique plaecholders. If this is not satisfied, in debug mode warnings are printed and the finalized string may contain error marks.
This method relaxes the placeholder-argument matching, such that there must only be an argument available for every present unique placeholder (taking placeholder numbers to be 1-based indices into the argument list). This can come useful in some situations.
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
Substitute a QChar argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(const KLocalizedString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
Substitute another KLocalizedString into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const
Substitute a QString argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute an int argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute a long argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute a long long argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute an unsigned long long argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute an unsigned int argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const
Substitute an unsigned long argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
base the radix used to represent the number as a string. Valid values range from 2 to 36
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::subs(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const
Substitute a double argument into the message.
a the argument
fieldWidth width of the formatted field, padded by spaces. Positive value aligns right, negative aligns left
format type of floating point formatting, like in QString::arg
precision number of digits after the decimal separator
fillChar the character used to fill up the empty places when field width is greater than argument width
Returns updated KLocalizedString
QString KLazyLocalizedString::toString() const
Finalize the translation.
Creates translated QString. If the string has placeholders, make sure to call instead KLazyLocalizedString::subs and further KLocalizedString::subs methods before finalizing. Translated text is searched for based on the global locale.
Returns finalized translation
QString KLazyLocalizedString::toString(Kuit::VisualFormat format) const
Like toString(), but resolve KUIT markup into given visual format.
Given visual format overrides that implied by the context UI marker. If the message is not markup-aware, this is same as toString().
format the target visual format
Returns finalized translation
QString KLazyLocalizedString::toString(const QStringList &languages) const
Like toString(), but look for translation only in given languages.
Given languages override languages defined by the global locale. If languages is empty, original message is returned.
languages list of language codes (by decreasing priority) Returns finalized translation
QString KLazyLocalizedString::toString(const char *domain) const
Like toString(), but look for translation in the given domain.
domain the translation domain
Returns finalized translation
[constexpr]
const char *KLazyLocalizedString::untranslatedText() const
Returns the raw untranslated text as passed to kli18n*.
KLocalizedString KLazyLocalizedString::withDomain(const char *domain) const
Indicate to look for translation in the given domain.
domain the translation domain
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::withFormat(Kuit::VisualFormat format) const
Indicate to resolve KUIT markup into given visual format.
If the message is not markup-aware, this has no effect.
format the target visual format
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::withLanguages(const QStringList &languages) const
Indicate to look for translation only in given languages.
languages list of language codes (by decreasing priority)
Returns updated KLocalizedString
KLocalizedString KLazyLocalizedString::operator KLocalizedString() const
Convert to a KLocalizedString to actually perform the translation and obtain a concrete localized string.
The translation domain active at this point will be used. This means this has to be called in the same translation domain the corresponding kli18n call is in.
Related Non-Members
[since 5.89]
KLazyLocalizedString kli18n(const char *text)
Mark the string text for extraction.
text string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString kli18nc(const char *context, const char *text)
Mark the string text with context for extraction.
context context of the string
text string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString kli18ncp(const char *context, const char *singular, const char *plural)
Mark the string singular and plural with context for extraction.
context context of the string
singular singular form of the string to translate
plural plural form of the string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString kli18np(const char *singular, const char *plural)
Mark the string singular and plural for extraction.
singular singular form of the string to translate
plural plural form of the string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString klxi18n(const char *text)
Mark the markup-aware string text for extraction.
text string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString klxi18nc(const char *context, const char *text)
Mark the markup-aware string text with context for extraction.
context context of the string
text string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString klxi18ncp(const char *context, const char *singular, const char *plural)
Mark the markup-aware string singular and plural with context for extraction.
context context of the string
singular singular form of the string to translate
plural plural form of the string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.
[since 5.89]
KLazyLocalizedString klxi18np(const char *singular, const char *plural)
Mark the markup-aware string singular and plural for extraction.
singular singular form of the string to translate
plural plural form of the string to translate
Returns KLazyLocalizedString for deferred translation.
This function was introduced in 5.89.