在开发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--
修正一个小错误在上面的代码,但仍然没有结果。
盲目猜测:是否使用,你想翻译对字符串的QObject :: TR()?此外,Qt无法知道动态字符串,因此如果您知道将出现什么字符串(可能从数据库中检索到),则必须确保它们出现在tr()内,即使该代码从不执行。 – erelender 2010-02-08 14:10:47
@erelender是的,我在我所有的编译时间字符串(标签和按钮文本,主要)中使用tr()。然而,我没有得到翻译权。 – cake 2010-02-09 22:03:03