From 292a55e7d6a34090e0c0e496c144fa5740f5229f Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 3 Apr 2025 12:37:49 +0200 Subject: [PATCH] Build: Simplify add_translation_targets Deduplicate the _create_ts_custom_target calls by splitting the creation of .ts and .qm targets. For both targets, one can specify a different set of languages by passing TS_LANGUAGES or QM_LANGUAGES. This is currently used for the "en" language that merely serves as a typo hotfix translation. Change-Id: I83bd10033188d4adf3dc0f78ecd81bcafc68ccaa Reviewed-by: Eike Ziller --- cmake/QtCreatorTranslations.cmake | 37 +++++++++------------ share/qtcreator/translations/CMakeLists.txt | 5 +-- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/cmake/QtCreatorTranslations.cmake b/cmake/QtCreatorTranslations.cmake index 8ea5ad6954b..19a92a71b2c 100644 --- a/cmake/QtCreatorTranslations.cmake +++ b/cmake/QtCreatorTranslations.cmake @@ -161,7 +161,7 @@ function(add_translation_targets file_prefix) cmake_parse_arguments(_arg "" "OUTPUT_DIRECTORY;INSTALL_DESTINATION;TS_TARGET_PREFIX;QM_TARGET_PREFIX;ALL_QM_TARGET" - "LANGUAGES;TARGETS;SOURCES;INCLUDES" ${ARGN}) + "TS_LANGUAGES;QM_LANGUAGES;TARGETS;SOURCES;INCLUDES" ${ARGN}) if (_arg_UNPARSED_ARGUMENTS) message(FATAL_ERROR "Invalid parameters to add_translation_targets: ${_arg_UNPARSED_ARGUMENTS}.") endif() @@ -194,8 +194,20 @@ function(add_translation_targets file_prefix) INCLUDES ${_to_process_includes} ${_arg_INCLUDES} ) - _create_ts_custom_target(untranslated - FILE_PREFIX "${file_prefix}" TS_TARGET_PREFIX "${_arg_TS_TARGET_PREFIX}" + set(ts_languages untranslated ${_arg_TS_LANGUAGES}) + foreach(language IN LISTS ts_languages) + _create_ts_custom_target(${language} + FILE_PREFIX "${file_prefix}" TS_TARGET_PREFIX "${_arg_TS_TARGET_PREFIX}" + LUPDATE_RESPONSE_FILE "${lupdate_response_file}" + DEPENDS ${_arg_SOURCES} + ) + endforeach() + + # Create ts_all* targets. + _create_ts_custom_target(all + LANGUAGES ${ts_languages} + FILE_PREFIX "${file_prefix}" + TS_TARGET_PREFIX "${_arg_TS_TARGET_PREFIX}" LUPDATE_RESPONSE_FILE "${lupdate_response_file}" DEPENDS ${_arg_SOURCES} ) @@ -206,17 +218,10 @@ function(add_translation_targets file_prefix) file(MAKE_DIRECTORY ${_arg_OUTPUT_DIRECTORY}) - foreach(l IN ITEMS ${_arg_LANGUAGES}) + foreach(l IN LISTS _arg_QM_LANGUAGES) set(_ts_file "${CMAKE_CURRENT_SOURCE_DIR}/${file_prefix}_${l}.ts") set(_qm_file "${_arg_OUTPUT_DIRECTORY}/${file_prefix}_${l}.qm") - _create_ts_custom_target("${l}" - FILE_PREFIX "${file_prefix}" - TS_TARGET_PREFIX "${_arg_TS_TARGET_PREFIX}" - LUPDATE_RESPONSE_FILE "${lupdate_response_file}" - DEPENDS ${_arg_SOURCES} - ) - add_custom_command(OUTPUT "${_qm_file}" COMMAND Qt::lrelease "${_ts_file}" -qm "${_qm_file}" MAIN_DEPENDENCY "${_ts_file}" @@ -228,14 +233,4 @@ function(add_translation_targets file_prefix) add_dependencies("${_arg_ALL_QM_TARGET}" "${_arg_QM_TARGET_PREFIX}${l}") endforeach() - - # Create ts_all* targets. - set(languages_for_all_target untranslated ${_arg_LANGUAGES}) - list(REMOVE_ITEM languages_for_all_target en) - _create_ts_custom_target(all - LANGUAGES ${languages_for_all_target} - FILE_PREFIX "${file_prefix}" - TS_TARGET_PREFIX "${_arg_TS_TARGET_PREFIX}" - LUPDATE_RESPONSE_FILE "${lupdate_response_file}" - ) endfunction() diff --git a/share/qtcreator/translations/CMakeLists.txt b/share/qtcreator/translations/CMakeLists.txt index 32152d8cdff..d7bf5759f51 100644 --- a/share/qtcreator/translations/CMakeLists.txt +++ b/share/qtcreator/translations/CMakeLists.txt @@ -1,4 +1,4 @@ -set(languages cs da de en fr hr ja pl ru sl uk zh_CN zh_TW) +set(languages cs da de fr hr ja pl ru sl uk zh_CN zh_TW) set(bad_languages hu) # Fix these before including them in languages! find_package(Python3 COMPONENTS Interpreter) @@ -45,7 +45,8 @@ else() endif() add_translation_targets(qtcreator - LANGUAGES ${languages} + TS_LANGUAGES ${languages} + QM_LANGUAGES ${languages} en OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${IDE_DATA_PATH}/translations" INSTALL_DESTINATION "${IDE_DATA_PATH}/translations" TARGETS "${__QTC_LIBRARIES}" "${__QTC_PLUGINS}"