在Qt中的动态转换中加载qm文件

时间:2013-08-05 19:12:06

标签: qt language-translation

我有一个应用程序,我想翻译波斯语的UI。为此,我需要在其中加载 qt_fa.qm my_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 会影响应用,只显示我自己的翻译。

对原因有任何疑问吗? 感谢

1 个答案:

答案 0 :(得分:3)

根据Qt Documentation和示例代码段,您应该从 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();
}