1

我有一个应用程序,我想将 UI 翻译成波斯语。为此,我需要在其中加载qt_fa.qmmy_app_fa.qm。但不幸的是,这两个文件都没有正确加载。下面的代码总是按我的预期运行:

  QApplication app(argc, argv);

  QTranslator translator;
  translator.load("qt_fa");            // returns true
  app.installTranslator(&translator);

  translator.load("my_app_fa");        // returns true
  app.installTranslator(&translator);
   .
   .

有时qt_fa会影响应用程序,并且布局更改为 RTL,并且显示 Qt 使用过的单词的翻译,而我自己的翻译没有显示。

有时my_app_fa会影响应用程序,并且只显示我自己的翻译。

你知道原因吗?谢谢

4

1 回答 1

3

根据带有示例代码片段的Qt文档,您应该从QTranslator创建两个对象

int main()
{
    QApplication app(argc, argv);

    QTranslator qtTranslator;
    qtTranslator.load("qt_" + QLocale::system().name(),
            QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    app.installTranslator(&qtTranslator);

    QTranslator myappTranslator;
    myappTranslator.load("myapp_" + QLocale::system().name());
    app.installTranslator(&myappTranslator);

    ...
    return app.exec();
}
于 2013-08-05T19:48:02.743 回答