include(FindGettext)
find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext)

file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS LINGUAS
     REGEX "^[^#].*")
string(REGEX MATCHALL "[^ \t]+" LANGS "${LINGUAS}")

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in
               ${CMAKE_CURRENT_BINARY_DIR}/POTFILES COPYONLY
)

# Creates the .pot file containing the translations template
set(POT_FILE ${PROJECT_NAME}.pot)
add_custom_command(OUTPUT ${POT_FILE}
    COMMENT "Generating translation template"
    COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE}
        -o ${CMAKE_CURRENT_BINARY_DIR}/${POT_FILE}
        --from-code=UTF-8
        --c++
        --qt
        --add-comments=TRANSLATORS
        --keyword=tr
        --keyword=tr:1,2
        --keyword=N_
        --package-name='${PROJECT_NAME}'
        --copyright-holder='Canonical Ltd.'
        -D ${CMAKE_SOURCE_DIR}
        -D ${CMAKE_CURRENT_SOURCE_DIR}
        -D ${CMAKE_CURRENT_BINARY_DIR}
        --files-from=${CMAKE_CURRENT_BINARY_DIR}/POTFILES
)

foreach(LANG ${LANGS})
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${LANG}.po
        ${CMAKE_CURRENT_BINARY_DIR}/${LANG}.po
        COPYONLY
    )
endforeach()
gettext_process_pot_file(${CMAKE_CURRENT_BINARY_DIR}/${POT_FILE} ALL
    INSTALL_DESTINATION ${CMAKE_INSTALL_LOCALEDIR}
    LANGUAGES ${LANGS}
)
