请让我知道为什么它不起作用我是Qt的新手。这是代码
class Transl
{
public:
static const QString str;
};
const QString Transl::str = QObject::tr("Hello world");
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTranslator translator;
translator.load("trans_la");
app.installTranslator(&translator);
QPushButton hello(Transl::str);
hello.resize(100, 30);
hello.show();
return app.exec();
}
我的trans_la.ts文件包含我由lupdate生成的文件。
<TS version="2.0">
<context>
<name>QObject</name>
<message>
<location filename="main.cpp" line="10"/>
<source>Hello world</source>
<translation>Orbis, te saluto!</translation>
</message>
</context>
</TS>
然后我发布生成trans_la.qm的lrelease。但是,当我运行我的可执行文件而不是显示翻译的字符串时,它显示“Hello world”。请告诉我为什么它不起作用。
答案 0 :(得分:0)
请参阅Qt Linguist manual,然后搜索标有Using QT_TR_NOOP() and QT_TRANSLATE_NOOP()
的部分,大约是页面下方的三分之二。
从translator.load()检查返回的布尔值是个好主意。我无法让它工作,并注意到文件未正确加载。然后我发现了another post,并手动将我的trans_fr.qm
文件移动到.exe上方的目录中。我认为这是一个错误,因为hello translation walkthrough从未提到这是必要的。