0

请让我知道为什么它不起作用我是 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”。请告诉我为什么它不起作用。

4

1 回答 1

0

请参阅Qt Linguist 手册并搜索Using QT_TR_NOOP() and QT_TRANSLATE_NOOP()页面下方约三分之二处标记的部分。

检查从 translate.load() 返回的布尔值是个好主意。我无法让它工作,并注意到文件没有正确加载。然后我发现了另一个帖子,并手动将我的trans_fr.qm文件移动到 .exe 上方的目录中。我认为这是一个错误,因为你好翻译演练从未提到这是必要的。

于 2014-02-05T20:53:01.127 回答