From 0288e6e1ebb24d06118b5456176e7e8d0e453c42 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Sun, 18 Jan 2015 04:16:40 +0300 Subject: [PATCH] edit translations build --- sources/translations/CMakeLists.txt | 13 +++++ .../awesome-widget/CMakeLists.txt | 23 ++++----- .../awesome-widget/extract_messages.sh | 47 ++++++++++-------- .../translations/desktop-panel/CMakeLists.txt | 22 ++++----- .../desktop-panel/extract_messages.sh | 48 +++++++++++-------- 5 files changed, 84 insertions(+), 69 deletions(-) create mode 100644 sources/translations/CMakeLists.txt diff --git a/sources/translations/CMakeLists.txt b/sources/translations/CMakeLists.txt new file mode 100644 index 0000000..b2c7357 --- /dev/null +++ b/sources/translations/CMakeLists.txt @@ -0,0 +1,13 @@ +find_package(Gettext REQUIRED) + +if (BUILD_KDE4) + find_package (KDE4 REQUIRED) +else () + find_package (ECM 0.0.12 REQUIRED NO_MODULE) + set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) + find_package (KF5 REQUIRED COMPONENTS I18n) + include (KDEInstallDirs) +endif () + +add_subdirectory (awesome-widget) +add_subdirectory (desktop-panel) diff --git a/sources/translations/awesome-widget/CMakeLists.txt b/sources/translations/awesome-widget/CMakeLists.txt index 21ff3bb..69497a1 100644 --- a/sources/translations/awesome-widget/CMakeLists.txt +++ b/sources/translations/awesome-widget/CMakeLists.txt @@ -1,25 +1,18 @@ -find_package(KDE4 REQUIRED) -find_package(Gettext REQUIRED) - -if (NOT GETTEXT_MSGFMT_EXECUTABLE) - message(FATAL_ERROR "Please install the msgfmt binary") -endif (NOT GETTEXT_MSGFMT_EXECUTABLE) +set (MO_NAME plasma_applet_awesome-widget.mo) file (GLOB _po_files *.po) - set (_gmoFiles) foreach (_current_PO_FILE ${_po_files}) get_filename_component (_lang ${_current_PO_FILE} NAME_WE) - set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) - add_custom_command (OUTPUT ${_gmoFile} - COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${_current_PO_FILE} + set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) + add_custom_command (OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${_current_PO_FILE} ) - install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ - RENAME plasma_applet_awesome-widget.mo) - list (APPEND _gmoFiles ${_gmoFile}) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME ${MO_NAME}) + list (APPEND _gmoFiles ${_gmoFile}) endforeach (_current_PO_FILE) add_custom_target (pofiles ALL DEPENDS ${_gmoFiles}) diff --git a/sources/translations/awesome-widget/extract_messages.sh b/sources/translations/awesome-widget/extract_messages.sh index 60d4706..e656ed4 100755 --- a/sources/translations/awesome-widget/extract_messages.sh +++ b/sources/translations/awesome-widget/extract_messages.sh @@ -1,41 +1,48 @@ #!/bin/sh -BASEDIR="../" # root of translatable sources +# root of translatable sources +BASEDIR="../../" +PATHS="awesome-widget" PROJECT="plasma_applet_awesome-widget" # project name BUGADDR="https://github.com/arcan1s/awesome-widgets/issues" # MSGID-Bugs -WDIR=$(pwd) # working dir +# working dir +WDIR=`pwd` + echo "Preparing rc files" -cd "${BASEDIR}" -find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' -o -name '*.py' | sort > "${WDIR}/rcfiles.list" -xargs --arg-file=${WDIR}/rcfiles.list extractrc > "${WDIR}/rc.cpp" -echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> "${WDIR}/rc.cpp" -echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> "${WDIR}/rc.cpp" +cd ${BASEDIR} +# we use simple sorting to make sure the lines do not jump around too much from system to system +find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' | grep ${PATHS} | sort > ${WDIR}/rcfiles.list +xargs --arg-file=${WDIR}/rcfiles.list extractrc > ${WDIR}/rc.cpp +# additional string for KAboutData +echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> ${WDIR}/rc.cpp +echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> ${WDIR}/rc.cpp +cd ${WDIR} echo "Done preparing rc files" echo "Extracting messages" -cd "${WDIR}" -cd "${BASEDIR}" -find . -name '*.cpp' -o -name '*.h' -o -name '*.c' -o -name '*.py' | sort > "${WDIR}/infiles.list" -echo "rc.cpp" >> "${WDIR}/infiles.list" - -cd "${WDIR}" +cd ${BASEDIR} +# see above on sorting +find . -name '*.cpp' -o -name '*.h' -o -name '*.qml' | grep ${PATHS} | sort > ${WDIR}/infiles.list +echo "rc.cpp" >> ${WDIR}/infiles.list +cd ${WDIR} xgettext --from-code=UTF-8 -C -kde -ci18n -ki18n:1 -ki18nc:1c,2 -ki18np:1,2 -ki18ncp:1c,2,3 -ktr2i18n:1 \ -kI18N_NOOP:1 -kI18N_NOOP2:1c,2 -kaliasLocale -kki18n:1 -kki18nc:1c,2 -kki18np:1,2 -kki18ncp:1c,2,3 \ ---msgid-bugs-address="${BUGADDR}" --language=Python \ ---files-from=infiles.list -D "${BASEDIR}" -D "${WDIR}" -o "${PROJECT}.pot" || { echo "error while calling xgettext. aborting."; exit 1; } +--msgid-bugs-address="${BUGADDR}" \ +--files-from=infiles.list -D ${BASEDIR} -D ${WDIR} -o ${PROJECT}.pot || { echo "Error while calling xgettext, aborting."; exit 1; } echo "Done extracting messages" echo "Merging translations" -catalogs=$(find . -name '*.po') +catalogs=`find . -name '*.po'` for cat in $catalogs; do - echo $cat - msgmerge -o "$cat.new" "$cat" "${PROJECT}.pot" - mv "$cat.new" "$cat" + echo $cat + msgmerge -o $cat.new $cat ${PROJECT}.pot + mv $cat.new $cat done echo "Done merging translations" + echo "Cleaning up" -cd "${WDIR}" +cd ${WDIR} rm -f rcfiles.list infiles.list rc.cpp echo "Done" diff --git a/sources/translations/desktop-panel/CMakeLists.txt b/sources/translations/desktop-panel/CMakeLists.txt index 8d85a8e..19a0bd7 100644 --- a/sources/translations/desktop-panel/CMakeLists.txt +++ b/sources/translations/desktop-panel/CMakeLists.txt @@ -1,24 +1,18 @@ -find_package(KDE4 REQUIRED) -find_package(Gettext REQUIRED) - -if (NOT GETTEXT_MSGFMT_EXECUTABLE) - message(FATAL_ERROR "Please install the msgfmt binary") -endif (NOT GETTEXT_MSGFMT_EXECUTABLE) +set (MO_NAME plasma_applet_desktop-panel.mo) file (GLOB _po_files *.po) - set (_gmoFiles) foreach (_current_PO_FILE ${_po_files}) get_filename_component (_lang ${_current_PO_FILE} NAME_WE) - set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) - add_custom_command (OUTPUT ${_gmoFile} - COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${_current_PO_FILE} + set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo) + add_custom_command (OUTPUT ${_gmoFile} + COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${_current_PO_FILE} ) - install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME plasma_applet_desktop-panel.mo) - list (APPEND _gmoFiles ${_gmoFile}) + install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME ${MO_NAME}) + list (APPEND _gmoFiles ${_gmoFile}) endforeach (_current_PO_FILE) add_custom_target (pofiles ALL DEPENDS ${_gmoFiles}) diff --git a/sources/translations/desktop-panel/extract_messages.sh b/sources/translations/desktop-panel/extract_messages.sh index 85702bd..5c2f2a7 100755 --- a/sources/translations/desktop-panel/extract_messages.sh +++ b/sources/translations/desktop-panel/extract_messages.sh @@ -1,40 +1,48 @@ #!/bin/sh -BASEDIR="../" # root of translatable sources +# root of translatable sources +BASEDIR="../../" +PATHS="desktop-panel" PROJECT="plasma_applet_desktop-panel" # project name BUGADDR="https://github.com/arcan1s/awesome-widgets/issues" # MSGID-Bugs -WDIR=`pwd` # working dir +# working dir +WDIR=`pwd` + echo "Preparing rc files" -cd "${BASEDIR}" -find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' -o -name '*.py' | sort > "${WDIR}/rcfiles.list" -xargs --arg-file=${WDIR}/rcfiles.list extractrc > "${WDIR}/rc.cpp" -echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> "${WDIR}/rc.cpp" -echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> "${WDIR}/rc.cpp" +cd ${BASEDIR} +# we use simple sorting to make sure the lines do not jump around too much from system to system +find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' | grep ${PATHS} | sort > ${WDIR}/rcfiles.list +xargs --arg-file=${WDIR}/rcfiles.list extractrc > ${WDIR}/rc.cpp +# additional string for KAboutData +echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> ${WDIR}/rc.cpp +echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> ${WDIR}/rc.cpp +cd ${WDIR} echo "Done preparing rc files" echo "Extracting messages" -cd "${WDIR}" -cd "${BASEDIR}" -find . -name '*.cpp' -o -name '*.h' -o -name '*.c' -o -name '*.py' | sort > "${WDIR}/infiles.list" -echo "rc.cpp" >> "${WDIR}/infiles.list" - -cd "${WDIR}" +cd ${BASEDIR} +# see above on sorting +find . -name '*.cpp' -o -name '*.h' -o -name '*.qml' | grep ${PATHS} | sort > ${WDIR}/infiles.list +echo "rc.cpp" >> ${WDIR}/infiles.list +cd ${WDIR} xgettext --from-code=UTF-8 -C -kde -ci18n -ki18n:1 -ki18nc:1c,2 -ki18np:1,2 -ki18ncp:1c,2,3 -ktr2i18n:1 \ -kI18N_NOOP:1 -kI18N_NOOP2:1c,2 -kaliasLocale -kki18n:1 -kki18nc:1c,2 -kki18np:1,2 -kki18ncp:1c,2,3 \ ---msgid-bugs-address="${BUGADDR}" --language=Python \ ---files-from=infiles.list -D "${BASEDIR}" -D "${WDIR}" -o "${PROJECT}.pot" || { echo "error while calling xgettext. aborting."; exit 1; } +--msgid-bugs-address="${BUGADDR}" \ +--files-from=infiles.list -D ${BASEDIR} -D ${WDIR} -o ${PROJECT}.pot || { echo "Error while calling xgettext, aborting."; exit 1; } echo "Done extracting messages" echo "Merging translations" -catalogs=$(find . -name '*.po') +catalogs=`find . -name '*.po'` for cat in $catalogs; do - echo $cat - msgmerge -o "$cat.new" "$cat" "${PROJECT}.pot" - mv "$cat.new" "$cat" + echo $cat + msgmerge -o $cat.new $cat ${PROJECT}.pot + mv $cat.new $cat done echo "Done merging translations" + echo "Cleaning up" -cd "${WDIR}" +cd ${WDIR} rm -f rcfiles.list infiles.list rc.cpp echo "Done" +