initial import
src/UseClQti18n.cmake
Sun Apr 5 17:36:46 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* initial import
--- old-qt.examples/src/UseClQti18n.cmake 1970-01-01 01:00:00.000000000 +0100
+++ new-qt.examples/src/UseClQti18n.cmake 2014-10-24 09:11:35.000000000 +0200
@@ -0,0 +1,66 @@
+# - Extract qt:tr strings from lisp source files and generate the Qt message files.
+#
+# macro CL_GENERATE_QT_CATALOG(CATALOG_NAME LISP_SOURCE_FILES)
+# Generates ${CATALOG_NAME}.pot, updates the ${CATALOG_NAME}_LANGS.po files and
+# makes the ${CATALOG_NAME}_LANGS.qm files when the global target is build.
+#
+
+find_package(Gettext)
+find_program(XGETTEXT_EXECUTABLE xgettext)
+
+macro(CL_GENERATE_QT_CATALOG CATALOG_NAME LISP_SOURCE_FILES)
+ ## Run xgettext
+ ##
+ ## TODO: set charset
+ if(XGETTEXT_EXECUTABLE)
+ add_custom_command(OUTPUT ${CATALOG_NAME}.pot
+ COMMAND ${XGETTEXT_EXECUTABLE} -L lisp
+ -kqt:tr:1,2c
+ -kqt:tr:1
+ ${LISP_SOURCE_FILES} -o ${CATALOG_NAME}.pot
+ DEPENDS ${LISP_SOURCE_FILES})
+ add_custom_target(messages ALL DEPENDS ${CATALOG_NAME}.pot)
+ endif(XGETTEXT_EXECUTABLE)
+
+ ## Generate Qt .qm files from the .po files.
+ ##
+ ## based on:
+ ## http://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems#Extracting_and_merging_messages
+ if(GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGMERGE_EXECUTABLE)
+ file(GLOB PO_FILES ${CATALOG_NAME}*.po)
+ message ("PO ${PO_FILES}")
+
+ set(QM_FILES "")
+
+ foreach(_poFile ${PO_FILES})
+ get_filename_component(_poFileName ${_poFile} NAME)
+ string(REGEX REPLACE "^${CATALOG_NAME}_?" "" _langCode ${_poFileName} )
+ string(REGEX REPLACE "\\.po$" "" _langCode ${_langCode} )
+
+ if( _langCode )
+ get_filename_component(_lang ${_poFile} NAME_WE)
+ set(_qmFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.qm)
+ add_custom_command(OUTPUT ${_qmFile}
+ COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE}
+ --quiet --update --backup=none
+ ${_poFileName}
+ ${CATALOG_NAME}.pot
+
+ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
+ --check --use-fuzzy --qt -o ${_qmFile} ${_poFile}
+
+ DEPENDS ${_poFile} ${CATALOG_NAME}.pot)
+ list(APPEND QM_FILES ${_qmFile})
+ endif( _langCode )
+
+ endforeach(_poFile ${PO_FILES})
+
+ add_custom_target(translations ALL
+ DEPENDS ${QM_FILES})
+
+ endif(GETTEXT_MSGFMT_EXECUTABLE AND GETTEXT_MSGMERGE_EXECUTABLE)
+
+endmacro(CL_GENERATE_QT_CATALOG)
+
+
+