2010-02-05 195 views
2

在开发Qt应用程序时,我遇到了使用QTranslator的问题。经过一番研究,我发现问题是来自Qt的lupdate与Qt翻译lupdate和命名空间

using namespace; 

指令有问题。按照here中的说明,我发现我必须在我的代码中使用特殊注释,以帮助lupdate明白这些类位于命名空间内。特殊的注释是这样的:

/* 
TRANSLATOR namespace::MyClass 
*/ 

所以,我说在我所有的来源必须通过TR所管理将QString这个意见。但是,这些应用程序仍然没有被翻译。 QTranslator的installTranslator方法返回true。我用来安装翻译器的实际代码是

Application app(argc,argv); //Application is a subclass of QApplication 
QTextCoded::setCodecForTr(QTextCodec::codecForName("utf8")); 
QTranslator translator; 
translator.load(QString("..//language//") + locale); 
app.installTranslator(&translator); 
app.exec(); 

有没有人遇到同样的问题?我究竟做错了什么?

EDIT--

修正一个小错误在上面的代码,但仍然没有结果。

+0

盲目猜测:是否使用,你想翻译对字符串的QObject :: TR()?此外,Qt无法知道动态字符串,因此如果您知道将出现什么字符串(可能从数据库中检索到),则必须确保它们出现在tr()内,即使该代码从不执行。 – erelender 2010-02-08 14:10:47

+0

@erelender是的,我在我所有的编译时间字符串(标签和按钮文本,主要)中使用tr()。然而,我没有得到翻译权。 – cake 2010-02-09 22:03:03

回答

0

您确实安装了翻译器,但不加载任何翻译。

您链接到指定的确切文件:

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    QTranslator translator; 
    translator.load(QString("arrowpad_") + locale); // here load translation 
    app.installTranslator(&translator); 

    app.exec() 
} 
+0

Ops ...我忘了这一步,但这不是问题(我已经尝试过)。我在编辑这个问题。 – cake 2010-02-05 15:35:01