QT_TR_NOOP:生成翻译文件,但翻译的字符串从未使用过,为什么?

时间:2011-01-11 06:32:24

标签: c++ qt localization translation

在一个应用程序中,我有很多显然不是QObject后代的类,这些对象显然会抛出异常,而这些异常显然需要翻译。所以,我在QT_TR_NOOP宏中包含了异常中抛出的每个字符串。这让我可以生成翻译文件。但是当我运行我的程序时,字符串仍未翻译。如果我尝试通过QApplication :: translate(“MyClassName”,“英文文本”)来获取它们,我可以很好地获取字符串,但QT_TR_NOOP(“英文文本”)只返回英文文本。我应该采取哪些额外步骤才能使其正常工作?

另外,还有一个小问题:如果我在一个不属于任何类的成员的函数中使用QT_TR_NOOP,会发生什么? Qt是否只是默默地忽略了这种情况?

2 个答案:

答案 0 :(得分:4)

似乎我弄错了:(

QT_TR_NOOP用于标记字符串以进行函数外的转换;它应该返回原始文本。我需要的是将翻译应用于非qt类,这将在下面详细描述:

Internationalization with Qt: Translating Non-Qt Classes

很抱歉打扰。

答案 1 :(得分:3)

QT_TR_NOOP仅将文本标记为可能需要翻译的内容(以便它显示在Qt Linguist中),但它不会进行任何翻译。为此你需要使用tr()。