I cannot find any official documentation about QT_TRANSLATE_NOOP_UTF8 macro. How does it works and what is "scope" argument? Is it namespace? And if it is, how to specify nested namespaces?
I cannot find any official documentation about QT_TRANSLATE_NOOP_UTF8 macro. How does it works and what is "scope" argument? Is it namespace? And if it is, how to specify nested namespaces?
I've found documentation for it (it is hard to find but it is documented):
- Global Qt Declarations | Qt Core 6.3.2
QT_TR_NOOP(sourceText)
Marks the UTF-8 encoded string literal sourceText for delayed translation in the current context (class).
The macro tells lupdate to collect the string, and expands to sourceText itself.
Example:
FriendlyConversation::greeting(int type) { static const char *greeting_strings[] = { QT_TR_NOOP("Hello"), QT_TR_NOOP("Goodbye") }; return tr(greeting_strings[type]); }The macro QT_TR_NOOP_UTF8() is identical and obsolete; this applies to all other _UTF8 macros as well.
See also QT_TRANSLATE_NOOP() and Internationalization with Qt.
Note bold part. So doesn't matter that this is for QT_TR_NOOP it applies also for:
- Global Qt Declarations | Qt Core 6.3.2
QT_TRANSLATE_NOOP(context, sourceText)
Marks the UTF-8 encoded string literal sourceText for delayed translation in the given context. The context is typically a class name and also needs to be specified as a string literal.
The macro tells lupdate to collect the string, and expands to sourceText itself.
Example:
static const char *greeting_strings[] = { QT_TRANSLATE_NOOP("FriendlyConversation", "Hello"), QT_TRANSLATE_NOOP("FriendlyConversation", "Goodbye") }; QString FriendlyConversation::greeting(int type) { return tr(greeting_strings[type]); } QString global_greeting(int type) { return qApp->translate("FriendlyConversation", greeting_strings[type]); }See also QT_TR_NOOP(), QT_TRANSLATE_NOOP3(), and Internationalization with Qt.
There is only a single mention of this macro in the qtbase repository:
#define QT_TRANSLATE_NOOP_UTF8(scope, x) x
The macro has been there, almost unchanged and entirely undocumented, since at least 2011. It might be a backwards compatibility thing, but if so, it goes way back.
From what I can tell, the translation tool Qt Linguist treats it in the same way as the more "official" QT_TRANSLATE_NOOP macro, which incidentally also accepts UTF-8 only.