Qt_Custom_Style_Example/_cmake/update_translations.cmake

71 lines
2.4 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Файл для подключения в основной проект через 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})