Translations of QMessageBox not work in Qt5.3

后端 未结 3 602
余生分开走
余生分开走 2020-12-21 08:23

I\'m a fan of Qt and update it frequently, Qt5.1->5.2->5.3.

However, the tranalations of Standard buttons like \"Ok\" \"Cancel\" \"Save\" do not work anymore in Qt5.

相关标签:
3条回答
  • 2020-12-21 08:55

    Starting from Qt5.3 the qt_*.qm is divided into multiple files (qt*_*.qm) and now you have to copy qtbase_*.qm to translation directory and use together.

    QString translationsPath(QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    QLocale locale = QLocale::system();
    
    QTranslator qtTranslator;
    if (qtTranslator.load(locale, "qt", "_", translationsPath))
        a.installTranslator(&qtTranslator);
    
    QTranslator qtBaseTranslator;
    if (qtBaseTranslator.load(locale, "qtbase", "_", translationsPath))
        a.installTranslator(&qtBaseTranslator);
    
    0 讨论(0)
  • 2020-12-21 09:01

    I had the same problem and got it to work with an updated translation file. I am not sure if this is the intended behaviour, but my qt_de.qm has a filesize of only 1kB. There is however a file called qtbase_de.qm now (154kB) which seems to do the trick.

    0 讨论(0)
  • 2020-12-21 09:13

    This is source of qt_ru:

       <?xml version="1.0" encoding="utf-8"?>
        <!DOCTYPE TS>
        <TS version="2.0" language="ru">
        <dependencies>
            <dependency catalog="qtbase_ru"/>
            <dependency catalog="qtscript_ru"/>
            <dependency catalog="qtquick1_ru"/>
            <dependency catalog="qtmultimedia_ru"/>
            <dependency catalog="qtxmlpatterns_ru"/>
        </dependencies>
        </TS>
    

    Therefore, it is necessary to deploy application with all these translation files. If at least one file is missing, the translation qt_ru will not load.

    0 讨论(0)
提交回复
热议问题