71 lines
2.4 KiB
CMake
71 lines
2.4 KiB
CMake
|
||
# Файл для подключения в основной проект через include
|
||
|
||
# Обновление и генерация файлов переводов
|
||
# Языки переводов перечислить в переменной LNG
|
||
|
||
if(IS_DEBUG)
|
||
message(STATUS "Project '${PROJECT_NAME}' [translations] DEBUG building: skip .qm generation")
|
||
return()
|
||
endif()
|
||
|
||
# Если список языков не задан в основном CMakeLists.txt — применяем по умолчанию
|
||
if(NOT DEFINED LNG)
|
||
set(LNG en ru)
|
||
message(STATUS "Project '${PROJECT_NAME}' [translations] LNG not set, use default: ${LNG}")
|
||
else()
|
||
message(STATUS "Project '${PROJECT_NAME}' [translations] Use LNG: ${LNG}")
|
||
endif()
|
||
|
||
# Подключить LinguistTools
|
||
find_package(Qt${QT_VERSION_MAJOR}LinguistTools REQUIRED)
|
||
|
||
# Полные пути утилит
|
||
get_target_property(LUPDATE_EXECUTABLE Qt${QT_VERSION_MAJOR}::lupdate IMPORTED_LOCATION)
|
||
get_target_property(LRELEASE_EXECUTABLE Qt${QT_VERSION_MAJOR}::lrelease IMPORTED_LOCATION)
|
||
|
||
# Каталог генерации файлов ts и qm файлов
|
||
set(TRANSLATIONS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations")
|
||
set(QM_OUTPUT_DIR "${DISTRIB_DIR}/translations")
|
||
file(MAKE_DIRECTORY "${TRANSLATIONS_DIR}")
|
||
file(MAKE_DIRECTORY "${QM_OUTPUT_DIR}")
|
||
|
||
# Список TS файлов в зависимости от списка языков
|
||
set(TS_FILES "")
|
||
|
||
# Обновление каждого файла с добавлением в список
|
||
foreach(LANG ${LNG})
|
||
|
||
set(TS_FILE "${TRANSLATIONS_DIR}/${PROJECT_NAME}_${LANG}.ts")
|
||
list(APPEND TS_FILES "${TS_FILE}")
|
||
message(STATUS "Project '${PROJECT_NAME}' Update translation file: ${TS_FILE}")
|
||
|
||
execute_process(COMMAND ${LUPDATE_EXECUTABLE}
|
||
${PROJECT_SOURCES}
|
||
-ts ${TS_FILE}
|
||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||
)
|
||
|
||
endforeach()
|
||
|
||
# Генерация файлов qm
|
||
set(QM_FILES "")
|
||
|
||
foreach(TS ${TS_FILES})
|
||
|
||
get_filename_component(TS_NAME_WE ${TS} NAME_WE)
|
||
set(QM ${QM_OUTPUT_DIR}/${TS_NAME_WE}.qm)
|
||
list(APPEND QM_FILES ${QM})
|
||
|
||
add_custom_command(
|
||
OUTPUT ${QM}
|
||
COMMAND ${LRELEASE_EXECUTABLE} ${TS} -qm ${QM}
|
||
DEPENDS ${TS}
|
||
COMMENT "Generating ${QM}"
|
||
)
|
||
endforeach()
|
||
|
||
add_custom_target(translations_qm ALL DEPENDS ${QM_FILES})
|
||
|
||
add_dependencies(translations_qm ${PROJECT_NAME})
|