forked from qt-creator/qt-creator
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:
@@ -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()
|
||||
|
@@ -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}"
|
||||
|
Reference in New Issue
Block a user