Support for loading language .qm files as Qt resource

This commit is contained in:
Magnus Hellströmer
2024-09-09 00:45:15 +02:00
parent 05dfd10952
commit 373fcfb4ea
4 changed files with 37 additions and 6 deletions

View File

@@ -71,10 +71,6 @@ find_package(
set(CMAKE_AUTOUIC_SEARCH_PATHS ${QET_DIR}/sources/ui) 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 # als laatse
include(cmake/define_definitions.cmake) include(cmake/define_definitions.cmake)
@@ -86,6 +82,14 @@ add_executable(
${QET_DIR}/qelectrotech.qrc ${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) find_package(SQLite3 REQUIRED)
target_link_libraries( 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/org.qelectrotech.qelectrotech.desktop DESTINATION share/applications)
install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages) install(FILES misc/qelectrotech.xml DESTINATION share/mime/packages)
install(FILES misc/qelectrotech.appdata.xml DESTINATION ${QET_APPDATA_PATH}) 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() endif()

View File

@@ -69,3 +69,7 @@ else()
endif() endif()
message("QET_COMPONENTS :" ${QET_COMPONENTS}) message("QET_COMPONENTS :" ${QET_COMPONENTS})
message("Qt version :" ${Qt${QT_VERSION_MAJOR}_VERSION}) message("Qt version :" ${Qt${QT_VERSION_MAJOR}_VERSION})
if(QMFILES_AS_RESOURCE)
add_definitions(-DQMFILES_AS_RESOURCE)
endif()

View File

@@ -33,3 +33,6 @@ add_definitions(-DQT_MESSAGELOGCONTEXT)
# Build with KF6 # Build with KF6
option(BUILD_WITH_KF6 "Build with KF6" ON) 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)

View File

@@ -222,6 +222,23 @@ void QETApp::setLanguage(const QString &desired_language) {
// load translations for the QET application // load translations for the QET application
// charge les traductions pour l'application QET // 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)) { if (!qetTranslator.load("qet_" + desired_language, languages_path)) {
/* in case of failure, /* in case of failure,
* we fall back on the native channels for French * we fall back on the native channels for French
@@ -237,6 +254,8 @@ void QETApp::setLanguage(const QString &desired_language) {
<< __LINE__ << __FUNCTION__ << ")"; << __LINE__ << __FUNCTION__ << ")";
} }
} }
#endif
qInfo() << "Loaded language file:" << qetTranslator.filePath();
qApp->installTranslator(&qetTranslator); qApp->installTranslator(&qetTranslator);
QString ltr_special_string = tr( QString ltr_special_string = tr(