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 <eike.ziller@qt.io>
This commit is contained in:
Joerg Bornemann
2025-04-03 12:37:49 +02:00
parent f464cbbc0b
commit 292a55e7d6
2 changed files with 19 additions and 23 deletions

View File

@@ -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()

View File

@@ -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}"