You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rosegarden/po/messages.sh

102 lines
3.3 KiB

#!/bin/bash
# Based on KDE messages.sh by Thomas Nagy
# Inspired by Makefile.common from coolo
# This script is used to update the .po files.
# To update the translations, you will need a specific gettext
# patched for kde and a lot of patience, tenacity, luck, time ..
# I guess one should only update the .po files when all .cpp files
# are generated (after a make or scons)
if [ -z "$KDE_GETTEXT_BIN" ]; then
if [ -f ./xgettext ] && ./xgettext --help 2>&1 | grep -q extract; then
KDE_GETTEXT_BIN=.
elif [ -d /opt/gettext-kde/bin ]; then
KDE_GETTEXT_BIN=/opt/gettext-kde/bin
fi
fi
if [ ! -d "$KDE_GETTEXT_BIN" ]; then
echo 1>&2
echo "WARNING: Environment variable KDE_GETTEXT_BIN must be set" 1>&2
echo "such that the KDE patched version of gettext is found in " 1>&2
echo "KDE_GETTEXT_BIN/." 1>&2
echo 1>&2
echo "Falling back to default gettext, but plural translations " 1>&2
echo "will probably be wrong." 1>&2
echo 1>&2
echo "See ftp://ftp.kde.org/devel/gettext-kde/ for the patched gettext." 1>&2
echo 1>&2
else
KDE_GETTEXT_PATH=${KDE_GETTEXT_BIN}/
fi
SRCDIR=../src # srcdir is the directory containing the source code
TIPSDIR=../docs/en # tipsdir is the directory containing the tips
DATADIR=../data # datadir is the directory containing fonts/mappings & styles
KDEDIR=`kde-config --prefix`
EXTRACTRC=extractrc # from kdesdk-scripts (on Debian Sarge)
KDEPOT=$KDEDIR/include/kde.pot
if [ ! -f "$KDEPOT" ] && [ -f /usr/include/kde/kde.pot ]; then
KDEPOT=/usr/include/kde/kde.pot
fi
XGETTEXT="${KDE_GETTEXT_PATH}xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x $KDEPOT "
## check that kde.pot is available
if ! test -e $KDEPOT; then
echo "$KDEPOT does not exist, there is something wrong with your installation!"
XGETTEXT="${KDE_GETTEXT_PATH}xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale "
fi
> rc.cpp
## extract the strings
echo "extracting the strings"
# process the .ui and .rc files
$EXTRACTRC `find $SRCDIR -iname *.rc` >> rc.cpp
$EXTRACTRC `find $SRCDIR -iname *.ui` >> rc.cpp
echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > $SRCDIR/_translatorinfo.cpp
# process the tips - $SRCDIR is supposed to be where the tips are living
pushd $TIPSDIR; preparetips >tips.cpp; popd
# process the fonts mapping attributes
FONTSDIR=$DATADIR/fonts/mappings
pushd $FONTSDIR
cat *.xml | perl -e 'while (<STDIN>) { if(/(encoding name|origin|copyright|mapped-by|type)\s*=\s*\"(.*)\"/) { print "i18n(\"$2\")\;\n";} }' > fonts.cpp
popd
# process the note head style names
STYLEDIR=$DATADIR/styles
pushd $STYLEDIR
ls *.xml | perl -e 'while (<STDIN>) { if(/(.*)\.xml/) { print "i18n(\"$1\")\;\n";} }' > styles.cpp
popd
# extract the strings
$XGETTEXT `find $SRCDIR \( -name "*.cpp" -o -name "*.h" \)` rc.cpp $TIPSDIR/tips.cpp $FONTSDIR/fonts.cpp $STYLEDIR/styles.cpp -o tmp.pot
# remove the intermediate files
rm -f $TIPSDIR/tips.cpp
rm -f $FONTSDIR/fonts.cpp
rm -f $STYLEDIR/styles.cpp
rm -f rc.cpp
rm -f $SRCDIR/_translatorinfo.cpp
## now merge the .po files ..
echo "merging the .po files"
for i in `ls *.po`; do
echo $i
msgmerge $i tmp.pot -o $i || exit 1
done
# replacing the old template by the new one
rm -f rosegarden.pot
mv tmp.pot rosegarden.pot
## finished
echo "Done"