# Gettext support - mostly borrowed from the Licq project set(po_FILES de es fr it nl pl pt_BR ru sk sv tr ) if (NOT GETTEXT_MSGMERGE_EXECUTABLE AND NOT GETTEXT_MSGFMT_EXECUTABLE) message(FATAL_ERROR "Gettext message catalog tools NOT found") endif (NOT GETTEXT_MSGMERGE_EXECUTABLE AND NOT GETTEXT_MSGFMT_EXECUTABLE) find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) if (GETTEXT_XGETTEXT_EXECUTABLE) # Get list of all source files file(GLOB_RECURSE po_source ${PROJECT_SOURCE_DIR}/vncviewer/*.h ${PROJECT_SOURCE_DIR}/vncviewer/*.cxx ) add_custom_target(translations_update ${GETTEXT_XGETTEXT_EXECUTABLE} "--directory=${PROJECT_SOURCE_DIR}" "--output=${CMAKE_CURRENT_SOURCE_DIR}/tigervnc.pot" --default-domain=tigervnc --keyword=_ --keyword=N_ "--copyright-holder=TigerVNC Team and many others \(see README.txt\)" --msgid-bugs-address=tigervnc-devel@googlegroups.com --sort-output --add-location ${po_source} COMMENT "Updating tigervnc.pot" VERBATIM ) endif (GETTEXT_XGETTEXT_EXECUTABLE) foreach(lang ${po_FILES}) set(po "${CMAKE_CURRENT_SOURCE_DIR}/${lang}.po") set(mo "${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo") # Update po files after pot file add_custom_command(TARGET translations_update POST_BUILD COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none --sort-output ${po} ${CMAKE_CURRENT_SOURCE_DIR}/tigervnc.pot COMMENT "Updating ${lang}.po" ) # Add command to build X.mo from X.po add_custom_command(OUTPUT ${mo} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${mo} ${po} DEPENDS ${po} ) install(FILES ${mo} DESTINATION "${LOCALE_DIR}/${lang}/LC_MESSAGES" RENAME tigervnc.mo ) set(moFiles ${moFiles} ${mo}) endforeach(lang) add_custom_target(translations ALL DEPENDS ${moFiles})