project (po)

find_program (_intltool_update intltool-update)
if (NOT EXISTS "${_intltool_update}")
    message (SEND_ERROR "Missing intltool-update (try: sudo apt-get install intltool)")
endif ()

find_program (_xgettext xgettext)
mark_as_advanced (_xgettext)

find_program (_msgmerge msgmerge)
mark_as_advanced (_msgmerge)

find_program(_msgfmt msgfmt)
mark_as_advanced (k3d_msgfmt)

set (project_catalogs ${ALL_LINGUAS})

set (project_catalog_targets)

add_custom_target (nls-update-sources
    ${_intltool_update} -m
    WORKING_DIRECTORY ${po_SOURCE_DIR}
)

add_custom_command (
    OUTPUT ${po_SOURCE_DIR}/template.pot
    COMMAND ${_intltool_update} --gettext-package ${CMAKE_PROJECT_NAME} --pot
    DEPENDS POTFILES.in
    WORKING_DIRECTORY ${po_SOURCE_DIR}
)

foreach(catalog ${project_catalogs})
    add_custom_target (nls-update-${catalog}.po
	${_msgmerge} ${catalog} ${CMAKE_PROJECT_NAME} -o ${catalog}.po --no-wrap
	DEPENDS ${po_SOURCE_DIR}/${catalog}.po
	WORKING_DIRECTORY ${po_SOURCE_DIR}
    )

    file (MAKE_DIRECTORY "${po_BINARY_DIR}/${catalog}/LC_MESSAGES")

    add_custom_command (
	OUTPUT ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/${CMAKE_PROJECT_NAME}.mo
	COMMAND ${_msgfmt} -c -o ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/${CMAKE_PROJECT_NAME}.mo ${po_SOURCE_DIR}/${catalog}.po
	DEPENDS ${po_SOURCE_DIR}/${catalog}.po
    )

    install (
	FILES ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/${CMAKE_PROJECT_NAME}.mo
	DESTINATION ${datadir}/locale/${catalog}/LC_MESSAGES
    )

    set (project_catalog_targets ${project_catalog_targets} ${po_BINARY_DIR}/${catalog}/LC_MESSAGES/${CMAKE_PROJECT_NAME}.mo)
endforeach(catalog)

add_custom_target(nls ALL
    DEPENDS ${po_SOURCE_DIR}/template.pot ${project_catalog_targets}
)
