IF(USE_GETTEXT_TRANSLATIONS) SET(_gmoFiles) GET_FILENAME_COMPONENT(_potBasename ${POTFILE} NAME_WE) GET_FILENAME_COMPONENT(_absPotFile ${POTFILE} ABSOLUTE) FOREACH(_currentPoFile ${pofiles}) GET_FILENAME_COMPONENT(_absFile ${_currentPoFile} ABSOLUTE) GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH) GET_FILENAME_COMPONENT(_lang ${_absFile} NAME_WE) SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) ADD_CUSTOM_COMMAND( OUTPUT ${_gmoFile} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_absFile} DEPENDS ${_absPotFile} ${_absFile} ) IF(UNIX) IF (APPLE) INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_PREFIX}/Contents/Resources/locale/ RENAME ${_lang}.mo) ELSE () # Assume Linux INSTALL(FILES ${_gmoFile} DESTINATION share/${PACKAGE}/${VERSION_BRANCH}/locale/ RENAME ${_lang}.mo) ENDIF () ELSEIF(WIN32) INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_PREFIX}/locale/ RENAME ${_lang}.mo) ENDIF() LIST(APPEND _gmoFiles ${_gmoFile}) ENDFOREACH() ADD_CUSTOM_TARGET(kvirc-translations-${_potBasename} DEPENDS ${_gmoFiles}) ADD_DEPENDENCIES(kvirc-translations kvirc-translations-${_potBasename}) IF(USE_GETTEXT_EXTRA) ADD_CUSTOM_TARGET(messages-extract-${_potBasename}) ADD_DEPENDENCIES(messages-extract messages-extract-${_potBasename}) ADD_CUSTOM_TARGET(messages-update-${_potBasename}) ADD_DEPENDENCIES(messages-update-${_potBasename} messages-extract-${_potBasename}) ADD_DEPENDENCIES(messages-update messages-update-${_potBasename}) # messages-extract SET(XGETTEXT_FILES) FOREACH(SDIR ${XGETTEXT_SOURCESDIR}) FILE(GLOB_RECURSE XGETTEXT_FILES_TEMP ${SDIR}/*.cpp ${SDIR}/*.h ${SDIR}/*.kvs) LIST(APPEND XGETTEXT_FILES ${XGETTEXT_FILES_TEMP}) ENDFOREACH() # All files in a new line GET_FILENAME_COMPONENT(ABS_PO_DIR ${_absPotFile} PATH) FILE(RELATIVE_PATH PO_DIR ${CMAKE_SOURCE_DIR} ${ABS_PO_DIR}) FILE(WRITE ${CMAKE_BINARY_DIR}/${PO_DIR}/filelist.txt "") SET(XGETTEXT_FILES_STRING) FOREACH(ARG ${XGETTEXT_FILES}) FILE(APPEND ${CMAKE_BINARY_DIR}/${PO_DIR}/filelist.txt ${ARG} "\n") ENDFOREACH() IF(TRANSLATION_KVIRC_CORE) ADD_CUSTOM_COMMAND( TARGET messages-extract-${_potBasename} POST_BUILD COMMENT "Extracting messages for ${_potBasename}" COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${_absPotFile} --package-name=${NICENAME} --package-version=${VERSION_RELEASE} --from-code=UTF-8 -k__tr -k__tr_no_lookup -k__tr2qs -k__tr2wc -k__tr2ws -ktr -f ${CMAKE_BINARY_DIR}/${PO_DIR}/filelist.txt ) ELSEIF(TRANSLATION_DEFSCRIPT) ADD_CUSTOM_COMMAND( TARGET messages-extract-${_potBasename} POST_BUILD COMMENT "Extracting ctx messages for default script ${_potBasename}" COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${_absPotFile} --package-name=${NICENAME} --package-version=${VERSION_RELEASE} --from-code=UTF-8 --language=C -ktr -f ${CMAKE_BINARY_DIR}/${PO_DIR}/filelist.txt ) ELSE() ADD_CUSTOM_COMMAND( TARGET messages-extract-${_potBasename} POST_BUILD COMMENT "Extracting ctx messages for ${_potBasename}" COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} -o ${_absPotFile} --package-name=${NICENAME} --package-version=${VERSION_RELEASE} --from-code=UTF-8 -k__tr_ctx -k__tr_no_lookup_ctx -k__tr2qs_no_lookup -k__tr2qs_ctx -k__tr2wc_ctx -k__tr2ws_ctx -f ${CMAKE_BINARY_DIR}/${PO_DIR}/filelist.txt ) ENDIF() # messages-update GET_FILENAME_COMPONENT(_potBasename ${POTFILE} NAME_WE) GET_FILENAME_COMPONENT(_absPotFile ${POTFILE} ABSOLUTE) FOREACH(_currentPoFile ${pofiles}) GET_FILENAME_COMPONENT(_absFile ${_currentPoFile} ABSOLUTE) GET_FILENAME_COMPONENT(_abs_PATH ${_absFile} PATH) GET_FILENAME_COMPONENT(_lang ${_absFile} NAME_WE) ADD_CUSTOM_COMMAND( TARGET messages-update-${_potBasename} POST_BUILD COMMENT "Updating messages in ${_currentPoFile}" COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --quiet --update --backup=none -s ${_absFile} ${_absPotFile} ) ENDFOREACH() IF(SED_EXECUTABLE) # wipes absolute paths from .pot? files, by mren ADD_CUSTOM_TARGET(messages-tidy-${_potBasename}) FILE(GLOB_RECURSE FILES_TO_TIDY ${pofiles}) FILE(GLOB_RECURSE POTS_TO_TIDY ${_absPotFile}) LIST(APPEND FILES_TO_TIDY ${POTS_TO_TIDY}) if(APPLE) # this is for the messages-tidy-module target FOREACH(curFile ${FILES_TO_TIDY}) ADD_CUSTOM_COMMAND(TARGET messages-tidy-${_potBasename} POST_BUILD COMMENT "Tidying ${curFile}..." COMMAND ${SED_EXECUTABLE} -i "" -e "s|^#:.*/\\(${TRANSLATION_BASEDIR}/.*\\)$|#: \\1|g" "${curFile}" VERBATIM ) ENDFOREACH() #this is for the messages-update-module target FOREACH(curFile ${FILES_TO_TIDY}) ADD_CUSTOM_COMMAND(TARGET messages-update-${_potBasename} POST_BUILD COMMENT "Tidying ${curFile}..." COMMAND ${SED_EXECUTABLE} -i "" -e "s|^#:.*/\\(${TRANSLATION_BASEDIR}/.*\\)$|#: \\1|g" "${curFile}" VERBATIM ) ENDFOREACH() else() # this is for the messages-tidy-module target FOREACH(curFile ${FILES_TO_TIDY}) ADD_CUSTOM_COMMAND(TARGET messages-tidy-${_potBasename} POST_BUILD COMMENT "Tidying ${curFile}..." COMMAND ${SED_EXECUTABLE} -i -e "s|^#:.*/\\(${TRANSLATION_BASEDIR}/.*\\)$|#: \\1|g" "${curFile}" VERBATIM ) ENDFOREACH() #this is for the messages-update-module target FOREACH(curFile ${FILES_TO_TIDY}) ADD_CUSTOM_COMMAND(TARGET messages-update-${_potBasename} POST_BUILD COMMENT "Tidying ${curFile}..." COMMAND ${SED_EXECUTABLE} -i -e "s|^#:.*/\\(${TRANSLATION_BASEDIR}/.*\\)$|#: \\1|g" "${curFile}" VERBATIM ) ENDFOREACH() endif() ENDIF() ENDIF() ENDIF()