装有QT_TRANSLATE_NOOP的字符串始终转换为原始字符串

时间:2013-10-08 09:44:43

标签: qt macros translation

我有一个.h文件,其中定义了一些全局常量。例如,产品名称定义如下:

#define PRODUCT_NAME QString(QT_TRANSLATE_NOOP("QObject", "MyProductName"))

字符串 MyProductName 出现在* .qs中,我也将其翻译。当我想使用那些变量时,我测试了下面的方法,但没有一个返回该翻译,并且始终显示原始文本。

// style 1
setWindowTitle(QObject::tr(PRODUCT_NAME));

// style 2
setWindowTitle(QApplication::translate("QObject", PRODUCT_NAME));

任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)

使用:

#define PRODUCT_NAME QT_TRANSLATE_NOOP("QObject", "MyProductName")
// style 1
setWindowTitle(QObject::tr(PRODUCT_NAME));

QString tr(const char*)将返回QString。

更改代码后重新运行lupdate并在ts文件中应用翻译,发布到qm并将其包含在您的应用程序中。