set(TRANSLATIONS "de" "en_US" ) foreach(LANG IN LISTS TRANSLATIONS) set(BASE_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/${LANG}.po") set(LABELS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/labels/${LANG}.po") set(MENU_ITEMS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/menu_items/${LANG}.po") set(TOOLTIPS_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/po/tooltips/${LANG}.po") set(BINARY_FILE "${CMAKE_CURRENT_BINARY_DIR}/${LANG}/LC_MESSAGES/turns.mo") list(APPEND TRANSLATION_BINARIES "${BINARY_FILE}") add_custom_command(OUTPUT "${BINARY_FILE}" COMMAND "${GETTEXT_MSGFMT_EXECUTABLE}" ARGS "-o" "${BINARY_FILE}" "${BASE_SOURCE_FILE}" "${LABELS_SOURCE_FILE}" "${MENU_ITEMS_SOURCE_FILE}" "${TOOLTIPS_SOURCE_FILE}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" DEPENDS "${BASE_SOURCE_FILE}" "${LABELS_SOURCE_FILE}" "${MENU_ITEMS_SOURCE_FILE}" "${TOOLTIPS_SOURCE_FILE}" COMMENT "Processing translation ${LANG}" ) install(FILES "${BINARY_FILE}" DESTINATION "${CMAKE_INSTALL_FULL_LOCALEDIR}/${LANG}/LC_MESSAGES" ) endforeach() add_custom_target("mofiles" DEPENDS ${TRANSLATION_BINARIES}) add_library("lang" INTERFACE) add_library("turns::lang" ALIAS "lang") if(TURNS_USE_INSTALLED_TRANSLATIONS) target_compile_definitions("lang" INTERFACE "LOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\"" ) else() target_compile_definitions("lang" INTERFACE "LOCALEDIR=\"${CMAKE_CURRENT_BINARY_DIR}\"" ) endif() target_include_directories("lang" INTERFACE "include" ) add_dependencies("lang" "mofiles") # Tests add_executable("lang-tests" "tests/labels.cpp" "tests/menu_items.cpp" "tests/tooltips.cpp" ) target_link_libraries("lang-tests" PRIVATE "Catch2::Catch2" "turns::intl-test-main" ) catch_discover_tests("lang-tests")