diff --git a/CMakeLists.txt b/CMakeLists.txt index f98be661d..e11a782a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,10 +71,6 @@ find_package( set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui) -qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) -set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang") -qt_add_translation(QM_FILES ${TS_FILES}) - # als laatse include(cmake/define_definitions.cmake) @@ -86,6 +82,14 @@ add_executable( ${QET_DIR}/qelectrotech.qrc ) +if(QMFILES_AS_RESOURCE) + qt_add_translations(${PROJECT_NAME} TS_FILES ${TS_FILES} RESOURCE_PREFIX "/lang") +else() + qt_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) + set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${QET_DIR}/lang") + qt_add_translation(QM_FILES ${TS_FILES}) +endif() + find_package(SQLite3 REQUIRED) target_link_libraries( @@ -152,6 +156,7 @@ install(FILES LICENSE ELEMENTS.LICENSE CREDIT README ChangeLog DESTINATION share install(FILES misc/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications) install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages) install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH}) -install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH}) - +if(NOT QMFILES_AS_RESOURCE) + install(FILES ${QM_FILES} DESTINATION ${QET_LANG_PATH}) +endif() endif() diff --git a/cmake/define_definitions.cmake b/cmake/define_definitions.cmake index 03662f7ff..c80cccef8 100644 --- a/cmake/define_definitions.cmake +++ b/cmake/define_definitions.cmake @@ -69,3 +69,7 @@ else() endif() message("QET_COMPONENTS :" ${QET_COMPONENTS}) message("Qt version :" ${Qt${QT_VERSION_MAJOR}_VERSION}) + +if(QMFILES_AS_RESOURCE) + add_definitions(-DQMFILES_AS_RESOURCE) +endif() \ No newline at end of file diff --git a/cmake/developer_options.cmake b/cmake/developer_options.cmake index 677c61f93..0431afd84 100644 --- a/cmake/developer_options.cmake +++ b/cmake/developer_options.cmake @@ -33,3 +33,6 @@ add_definitions(-DQT_MESSAGELOGCONTEXT) # Build with KF6 option(BUILD_WITH_KF6 "Build with KF6" ON) + +# Use translations as a Qt resource +option(QMFILES_AS_RESOURCE "Use .qm files as Qt resource" ON) diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 727dbdc89..42e352427 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -222,6 +222,23 @@ void QETApp::setLanguage(const QString &desired_language) { // load translations for the QET application // charge les traductions pour l'application QET +#ifdef QMFILES_AS_RESOURCE + if (!qetTranslator.load(QLocale(desired_language), "qet" "_", ":/lang")) { + /* in case of failure, + * we fall back on the native channels for French + * en cas d'echec, + * on retombe sur les chaines natives pour le francais + */ + if (desired_language != "fr") { + // use of the English version by default + // utilisation de la version anglaise par defaut + if(!qetTranslator.load(QLocale(desired_language), "qet", "_", ":/lang")) + qWarning() << "failed to load" + << ":/lang/qet_en.qm" << "(" << __FILE__ + << __LINE__ << __FUNCTION__ << ")"; + } + } +#else if (!qetTranslator.load("qet_" + desired_language, languages_path)) { /* in case of failure, * we fall back on the native channels for French @@ -237,6 +254,8 @@ void QETApp::setLanguage(const QString &desired_language) { << __LINE__ << __FUNCTION__ << ")"; } } +#endif + qInfo() << "Loaded language file:" << qetTranslator.filePath(); qApp->installTranslator(&qetTranslator); QString ltr_special_string = tr(