我有关于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文件中。
如果有人有任何提示,请与我分享。提前谢谢。
克里斯。
答案 0 :(得分:3)
在运行int main
函数之前,实例化静态变量(因此运行构造函数代码)。翻译代码在QApplication
构造函数中设置(我相信),在您输入int main
函数之前,该代码不会运行。因此,您试图在支持它的代码初始化之前获取字符串的转换。
为避免这种情况,您可以接受给定的字符串未被翻译并在每次使用时显式转换它,或者使用Construct on First Use idiom而不是静态成员变量。