QTranslator does not load qm files

44 Views Asked by At

I created two simple applications using Qt Creator master of new project, one uses qmake, the other CMake.

The qmake based app translates Ok, but the CMake one does not. I started to debug and observe why QTranslator does not load qm, file which I generated using Qt Linguist.

main.cpp:

QGuiApplication app(argc, argv);

QTranslator translator;
QStringList uiLanguages = QLocale::system().uiLanguages();

for (const QString &locale : uiLanguages) {
    const QString baseName = "TranslationTest_" + QLocale(locale).name();
    qDebug() << "baseName: " << baseName;
   if (translator.load(":/i18n/" + baseName)) {
        app.installTranslator(&translator);
        break;
    }
    else {
        qDebug() << "Translator does not load. ";
    }
}

QQmlApplicationEngine engine;

Console output:

QML debugging is enabled. Only use this in a safe environment.
baseName: "TranslationTest_ru_RU" Translator does not load.
baseName: "TranslationTest_en_US" Translator does not load.

CMakeLists.txt

cmake_minimum_required(VERSION 3.28)

project(TranslationTest VERSION 0.1 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(TS_FILES TranslationTest_ru_RU.ts)
set(PROJECT_SOURCES main.cpp qml.qrc ${TS_FILES})

find_package(QT NAMES Qt5 COMPONENTS Core Quick LinguistTools REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Quick LinguistTools REQUIRED)

add_executable(TranslationTest ${PROJECT_SOURCES})
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
target_compile_definitions(TranslationTest
    PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(TranslationTest
    PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick)

Why does QTranslator not load qm files when I use CMake?

0

There are 0 best solutions below