QObject::tr() 不翻译动态生成的字符串

Kar*_*tik 2 qt blackberry blackberry-10 blackberry-cascades

QObject::tr("%1").arg(_value);
Run Code Online (Sandbox Code Playgroud)

这里_value是 QString 类型的,是动态生成的。上述方法是否正确翻译动态生成的字符串,因为在我的代码中它似乎不起作用。

pep*_*ppe 5

有两个步骤:

1.使Qt提取字符串进行翻译。

这意味着使用其中之一

  • tr() 在 QObject 子类中
  • QCoreApplication::translate()
  • QT_TR_NOOP / QT_TRANSLATE_NOOP

lupdate将提取传递给这些函数/宏的字符串,并使它们可linguist用于翻译。

2. 执行翻译(即“查找”)

这再次由tr()和完成QCoreApplication::translate()。所以例如:

// marking the strings for extraction
static const char *strings[] = { 
    QT_TRANSLATE_NOOP("MyContext", "hello"), 
    QT_TRANSLATE_NOOP("MyContext", "world"); 
};
// performing the translation at runtime
qApp->translate("MyContext", strings[0]);
Run Code Online (Sandbox Code Playgroud)

有大量关于整个过程的文档,请参见此处