Seems (in Plasma widget code at least) when arguments which are empty strings are passed to i18n() & friend calls, they are treated as non-existent, resulting in placeholders to survive the replacement and replacements done in wrong places. Examples: i18n("%1", "") -> "%1" i18n("%1-%2", "", "text") -> "text-%2" This happens both for verbatim empty strings and variables containing empty strings. Reproducible: Always
i18n() is part of KF5::I18n