2

我对 qt 中的翻译有疑问。我的项目中的所有翻译都可以正常工作,但有一个位于类的静态变量中。对应部分代码如下

头文件与此类似:

typedef struct {
    int         type;
    QString     problematicString;
} info;

MyClass::QObject_Descendant
{
Q_OBJECT;

//some functions like constructor, destructor... etc.
....

static info myClassInfo;//class that makes problems

}

在实现文件中我初始化变量如下:

info MyClass::myClassInfo={
    1,
    tr("something to be translated")
};

无论我做什么(尝试使用 QT_TR_NOOP,然后是 tr() 和其他),我都无法翻译 myClassInfo.problematicString。最奇怪的是文本“要翻译的东西”出现在 *.ts 文件中。

如果有人有任何提示,请与我分享。提前致谢。

克里斯。

4

1 回答 1

3

静态变量在你的函数运行之前被实例化(因此,构造函数代码运行)int main。翻译代码是在构造函数中设置的(我相信),在输入你的函数QApplication之前它不会运行。int main因此,您试图在支持它的代码初始化之前获取字符串的翻译。

为避免这种情况,您可以接受给定的字符串未翻译并在每次使用时显式翻译它,或者使用Construct on First Use 习惯用法而不是静态成员变量。

于 2010-08-16T19:56:47.400 回答