# Translations.cmake, CMake macros written for Marlin, feel free to re-use them macro (add_musl_translations_directory NLS_PACKAGE LOCPATH) add_custom_target (musl-i18n ALL COMMENT ?Building i18n messages for C library.?) find_program (MSGFMT_EXECUTABLE msgfmt) # be sure that all languages are present # Using all usual languages code from https://www.gnu.org/software/gettext/manual/html_node/Language-Codes.html#Language-Codes # Rare language codes should be added on-demand. file(STRINGS LOCALES LANGUAGES_NEEDED) foreach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) create_po_file (${LANGUAGE_NEEDED}) endforeach (LANGUAGE_NEEDED ${LANGUAGES_NEEDED}) # generate .mo from .po file (GLOB PO_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.po) foreach (PO_INPUT ${PO_FILES}) get_filename_component (PO_INPUT_BASE ${PO_INPUT} NAME_WE) set (MO_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PO_INPUT_BASE}.UTF-8) set (PO_COPY ${CMAKE_CURRENT_BINARY_DIR}/${PO_INPUT_BASE}.po) file (COPY ${PO_INPUT} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) add_custom_command (TARGET musl-i18n COMMAND ${MSGFMT_EXECUTABLE} -o ${MO_OUTPUT} ${PO_INPUT}) install (FILES ${MO_OUTPUT} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${LOCPATH}) endforeach (PO_INPUT ${PO_FILES}) endmacro (add_musl_translations_directory)