# # Erzeugung / Update der ts & qm-Dateien # # $Id$ # $HeadURL$ # $Author$ # SET(_pri_dir "${CMAKE_BINARY_DIR}/translations/") IF(BUILD_TS_FILES) GET_PROPERTY(_targets GLOBAL PROPERTY NGL_TS_TARGETS) # MESSAGE(STATUS "translation targets: ${_targets}") # make sure to not have old .pri files ... FILE(GLOB _pri_files_to_remove LIST_DIRECTORIES false "${_pri_dir}*.pri") IF (_pri_files_to_remove) FILE(REMOVE ${_pri_files_to_remove}) ENDIF() FOREACH(_target ${_targets}) GET_TARGET_PROPERTY(_no_translation ${_target} NO_TRANSLATION) IF(_no_translation) CONTINUE() ENDIF() GET_TARGET_PROPERTY(_src_dir ${_target} SOURCE_DIR) GET_TARGET_PROPERTY(_bin_dir ${_target} BINARY_DIR) # build up sources GET_TARGET_PROPERTY(_all_sources ${_target} SOURCES) SET(_ts_sources "") FOREACH(_source ${_all_sources}) GET_FILENAME_COMPONENT(_ext ${_source} EXT) IF(_ext STREQUAL ".cpp" OR _ext STREQUAL ".hpp" OR _ext STREQUAL ".c" OR _ext STREQUAL ".h" OR _ext STREQUAL ".ui") GET_FILENAME_COMPONENT(_name ${_source} NAME_WE) IF(NOT _name MATCHES "^moc_.*$" AND NOT _name MATCHES "^ui_.*h$") IF(IS_ABSOLUTE ${_source}) LIST(APPEND _ts_sources ${_source}) ELSE() GET_FILENAME_COMPONENT(_abs_FILE ${_src_dir}/${_source} ABSOLUTE) IF(EXISTS ${_abs_FILE}) LIST(APPEND _ts_sources ${_abs_FILE}) ELSE() GET_FILENAME_COMPONENT(_abs_FILE ${_bin_dir}/${_source} ABSOLUTE) IF(EXISTS ${_abs_FILE}) LIST(APPEND _ts_sources ${_abs_FILE}) ELSE() MESSAGE(STATUS "Can not find absolute location of source file '${_source}") ENDIF() ENDIF() ENDIF() ENDIF() ENDIF() ENDFOREACH() LIST(LENGTH _ts_sources _len) IF(${_len} GREATER 0) SET(_ts_pri ${_pri_dir}${_target}_lupdate.pri) STRING(REPLACE ";" " " _pro_srcs "${_ts_sources}") FILE(WRITE "${_ts_pri}" "SOURCES += ${_pro_srcs}") ENDIF() ENDFOREACH() MACRO(TDS_GENERATE_TS_FILES _language) FIND_PACKAGE(PythonInterp 2.7 REQUIRED) SET(_pro_file ${CMAKE_CURRENT_BINARY_DIR}/tds_${_language}.pro) SET(_ts_file ${CMAKE_CURRENT_SOURCE_DIR}/tds_${_language}.ts) FILE(GLOB _pri_files ${CMAKE_CURRENT_BINARY_DIR} "*.pri") ADD_CUSTOM_COMMAND(OUTPUT ${_pro_file} COMMAND ${PYTHON_EXECUTABLE} ARGS ${CMAKE_CURRENT_SOURCE_DIR}/create_ts_pro.py ${CMAKE_CURRENT_BINARY_DIR} ${_pro_file} ${_targets_to_ignore} DEPENDS ${_pri_files} create_ts_pro.py ) #SET(_lupdate_options -target-language ${_language} -locations absolute -tr-function-alias QT_TRANSLATE_NOOP+=tr_lts -no-obsolete) SET(_lupdate_options -target-language ${_language} -locations absolute -tr-function-alias QT_TRANSLATE_NOOP+=tr_lts) ADD_CUSTOM_TARGET(update_ts_${_language} COMMAND Qt5::lupdate ${_lupdate_options} ${_pro_file} -ts ${_ts_file} DEPENDS ${_pro_file} ) ENDMACRO(TDS_GENERATE_TS_FILES) TDS_GENERATE_TS_FILES(en_US) TDS_GENERATE_TS_FILES(en_GB) TDS_GENERATE_TS_FILES(de_DE) ENDIF() MACRO(TDS_INSTALL_TRANSLATION _language _project) SET(_ts_file ${CMAKE_CURRENT_SOURCE_DIR}/${_project}_${_language}.ts) SET(_qm_files) NGL_ADD_TRANSLATION(${_pri_dir}${_language} ${_project} ${_ts_file} _qm_files) NGL_INSTALL(ALL FILES ${_qm_files} DESTINATION translations/${_language}) ADD_CUSTOM_TARGET(${_project}-translation-${_language} ALL DEPENDS ${_qm_files}) ENDMACRO() TDS_INSTALL_TRANSLATION(en_US tds) TDS_INSTALL_TRANSLATION(en_GB tds) TDS_INSTALL_TRANSLATION(de_DE tds) TDS_INSTALL_TRANSLATION(en_US kdreports) TDS_INSTALL_TRANSLATION(en_GB kdreports) TDS_INSTALL_TRANSLATION(de_DE kdreports)