【问题标题】:Qt tr() not working if i am using in static member如果我在静态成员中使用 Qt tr() 不起作用
【发布时间】:2013-10-26 17:06:48
【问题描述】:

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

【问题讨论】:

  • 可能是因为你的编译器在执行main()之前初始化了Transl::str?

标签: c++ qt localization internationalization translation


【解决方案1】:

查看Qt Linguist manual 并在页面下方约三分之二处搜索标记为Using QT_TR_NOOP() and QT_TRANSLATE_NOOP() 的部分。

加号

最好检查从 translate.load() 返回的布尔值。我无法让它工作,并注意到文件没有正确加载。然后我发现了another post,并手动将我的trans_fr.qm 文件移动到了.exe 上面的目录中。我认为这是一个错误,因为 hello translation walkthrough 从未提到这是必要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多