diff options
Diffstat (limited to 'cmakemodules/package_messages.sh.in')
-rwxr-xr-x | cmakemodules/package_messages.sh.in | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/cmakemodules/package_messages.sh.in b/cmakemodules/package_messages.sh.in new file mode 100755 index 0000000..962240f --- /dev/null +++ b/cmakemodules/package_messages.sh.in @@ -0,0 +1,82 @@ +#!/bin/sh + +# little helper script for regenerating translation files. Mostly taken from cvs.sh from kde-autotool environment +# adapted to a cmake build environment and removed a lot not really needed stuff +#EXTRACTRC=@EXTRACTRC@ +#PREPARETIPS=@PREPARETIPS@ +MESSAGES_DIR=@MESSAGES_DIR@ +SOURCE_DIR=@CMAKE_SOURCE_DIR@ +MAKE=make +POFILES="@POFILES@" +podir="${SOURCE_DIR}/po" + +cd ${SOURCE_DIR} +rm -rf po.backup +mkdir po.backup + +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i + cp po/$i po.backup/backup_$i + touch -r po/$i po.backup/backup_$i + rm po/$i +done + +podir=${podir:-$PWD/po} +#files=`find . -name Makefile.am | xargs egrep -l '^messages:' ` +#dirs=`for i in $files; do echo \`dirname $i\`; done` +dirs=${MESSAGES_DIR} +tmpname="$PWD/messages.log" +if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi +if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi +export EXTRACTRC PREPARETIPS + +for subdir in $dirs; do + test -z "$VERBOSE" || echo "Making messages in $subdir" + (cd $subdir + echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp + $EXTRACTRC `find . -name \*.ui -o -name \*.rc` > rc.cpp + XGETTEXT="${XGETTEXT:-xgettext} -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale --add-comments="TRANSLATORS:" -x ${includedir:-${KDEDIR:-@CMAKE_INSTALL_PREFIX@}/include/kde}/kde.pot" + find . -name '*.cpp' | xargs ${XGETTEXT} _translatorinfo.cpp -o ${podir}/@[email protected] + ) 2>&1 | grep -v '^make\[1\]' > $tmpname + test -s $tmpname && { echo $subdir ; cat "$tmpname"; } + test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp + rm -f $subdir/_translatorinfo.cpp +done +rm -f $tmpname +for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do + test -f po/$i || echo "disappeared: $i" +done +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + msgmerge -q -o po/$i po/$i po/$i + egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot + if test -f po.backup/$i && test -n "`diff temp.pot po.backup/$i`"; then + echo "will update $i" + msgmerge -q po.backup/backup_$i po/$i > temp.pot + mv temp.pot po/$i + else + if test -f po.backup/backup_$i; then + test -z "$VERBOSE" || echo "I'm restoring $i" + mv po.backup/backup_$i po/$i + rm po.backup/$i + else + echo "will add $i" + fi + fi +done +rm -f temp.pot +rm -rf po.backup + +echo Merging messages +for cat in $POFILES; do + msgmerge -o $cat.new $cat @CMAKE_SOURCE_DIR@/po/@[email protected] + if test -s $cat.new; then + grep -v "\"POT-Creation" $cat.new > $cat.new.2 + grep -v "\"POT-Creation" $cat >> $cat.new.1 + if diff $cat.new.1 $cat.new.2; then + rm $cat.new + else + mv $cat.new $cat + fi + rm -f $cat.new.1 $cat.new.2 + fi +done |