initial import
Annotate for file src/UseClQti18n.cmake
2009-04-05 tobias 1 # - Extract qt:tr strings from lisp source files and generate the Qt message files.
15:36:46 ' 2 #
' 3 # macro CL_GENERATE_QT_CATALOG(CATALOG_NAME LISP_SOURCE_FILES)
' 4 # Generates ${CATALOG_NAME}.pot, updates the ${CATALOG_NAME}_LANGS.po files and
' 5 # makes the ${CATALOG_NAME}_LANGS.qm files when the global target is build.
' 6 #
' 7
' 8 find_package(Gettext)
' 9 find_program(XGETTEXT_EXECUTABLE xgettext)
' 10
' 11 macro(CL_GENERATE_QT_CATALOG CATALOG_NAME LISP_SOURCE_FILES)
' 12 ## Run xgettext
' 13 ##
' 14 ## TODO: set charset
' 15 if(XGETTEXT_EXECUTABLE)
' 16 add_custom_command(OUTPUT ${CATALOG_NAME}.pot
' 17 COMMAND ${XGETTEXT_EXECUTABLE} -L lisp
' 18 -kqt:tr:1,2c
' 19 -kqt:tr:1
' 20 ${LISP_SOURCE_FILES} -o ${CATALOG_NAME}.pot
' 21 DEPENDS ${LISP_SOURCE_FILES})
' 22 add_custom_target(messages ALL DEPENDS ${CATALOG_NAME}.pot)
' 23 endif(XGETTEXT_EXECUTABLE)
' 24
' 25 ## Generate Qt .qm files from the .po files.
' 26 ##
' 27 ## based on:
' 28 ## http://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems#Extracting_and_merging_messages
' 29 if(GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGMERGE_EXECUTABLE)
' 30 file(GLOB PO_FILES ${CATALOG_NAME}*.po)
' 31 message ("PO ${PO_FILES}")
' 32
' 33 set(QM_FILES "")
' 34
' 35 foreach(_poFile ${PO_FILES})
' 36 get_filename_component(_poFileName ${_poFile} NAME)
' 37 string(REGEX REPLACE "^${CATALOG_NAME}_?" "" _langCode ${_poFileName} )
' 38 string(REGEX REPLACE "\\.po$" "" _langCode ${_langCode} )
' 39
' 40 if( _langCode )
' 41 get_filename_component(_lang ${_poFile} NAME_WE)
' 42 set(_qmFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.qm)
' 43 add_custom_command(OUTPUT ${_qmFile}
' 44 COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE}
' 45 --quiet --update --backup=none
' 46 ${_poFileName}
' 47 ${CATALOG_NAME}.pot
' 48
' 49 COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
' 50 --check --use-fuzzy --qt -o ${_qmFile} ${_poFile}
' 51
' 52 DEPENDS ${_poFile} ${CATALOG_NAME}.pot)
' 53 list(APPEND QM_FILES ${_qmFile})
' 54 endif( _langCode )
' 55
' 56 endforeach(_poFile ${PO_FILES})
' 57
' 58 add_custom_target(translations ALL
' 59 DEPENDS ${QM_FILES})
' 60
' 61 endif(GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGMERGE_EXECUTABLE)
' 62
' 63 endmacro(CL_GENERATE_QT_CATALOG)
' 64
' 65
' 66