Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

[solved]I try to load translation file (.qm file), but nothing happened



  • I have three files, main.cpp, main.qml, MainPage.qml.
    First, I use @lupdate main.qml MainPage.qml -ts translation_zh_CN.ts@
    Then I translate the ts file in Qt Linguist
    Then I use @lrelease translation_zh_CN.ts@
    Then I add translation_zh_CN.qm to my resource.qrc file
    my main.cpp is like this
    @#include <QtGui/QApplication>
    #include "qmlapplicationviewer.h"
    #include <QDebug>

    Q_DECL_EXPORT int main(int argc, char *argv[])
    {
    QScopedPointer<QApplication> app(createApplication(argc, argv));

    QLocale test = QLocale::system&#40;&#41;;
    qDebug(&#41; << "System locale:" << test.name(&#41;;
    
    QmlApplicationViewer viewer;
    viewer.rootContext(&#41;->setContextProperty("installPath", "file:///" + QCoreApplication::applicationDirPath() + "/");
    //viewer.setMainQmlFile&#40;QLatin1String("qrc:/main.qml"&#41;&#41;;
    viewer.setMainQmlFile("qrc:/main.qml"&#41;;
    
    QTranslator myTr;
    //myTr.load("qrc:/transtation_" + QLocale::system(&#41;.name(&#41;&#41;;
    myTr.load("qrc:/translation_" + QLocale::system(&#41;.name(&#41;&#41;;
    app->installTranslator(&myTr&#41;;
    
    viewer.showExpanded();
    
    return app->exec(&#41;;
    

    }
    @
    the qDebug() shows my locale is zh_CN, but the app just doesn't show my translation.


  • Moderators

    You have the line
    @
    myTr.load("qrc:/transtation_" + QLocale::system().name());
    @

    where "translation_" is misspelled. It's probably not seeing the proper file to load.



  • Thank you. But after I change the misspelling, the result is still the same.


  • Moderators

    Does it make a difference if you load the translator before you create your QApplicationViewer?



  • Thank you. It works when I put them before I create QApplicationViewer. Also, there is something tricky that I have to use.
    @ myTr.load(":/translation_" + QLocale::system().name());@
    instead of
    @ myTr.load("qrc:/translation_" + QLocale::system().name());@

    Is there difference between them? I used to think they are the same.



  • How did you solve it i have a similar issue, it works in debug but not in release ... I have it before the viewer as well but it does not help ..


Log in to reply