mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-14 01:19:20 +00:00
68 lines
1.9 KiB
Bash
Executable File
68 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# This script is meant to provide some means to copy over strings from one
|
|
# textdomain to another. It copies the relevant messages from SRCDOMAIN to
|
|
# DSTDOMAIN for LANG. If no specific languages are specified, all langs in the
|
|
# LINGUAS file for the DSTDOMAIN are used.
|
|
#
|
|
# Known limitations:
|
|
# * The tool as to be run from the root checkout dir after the string is
|
|
# available in the new textdomain.
|
|
# * Support for merging strings with plurals is likely to not exist.
|
|
#
|
|
# Required programs (should all come with the gettext package):
|
|
# * msgattrib
|
|
# * msgcat
|
|
# * msgfmt
|
|
# * msgmerge
|
|
set -e
|
|
|
|
# where we find the distribution po hierarchy
|
|
BASEDIR=po
|
|
|
|
# copy relevant messages from SRCDOMAIN to DSTDOMAIN, for LANG
|
|
|
|
if [ $# -lt 2 ]
|
|
then
|
|
echo "Usage: $0 src-domain dst-domain [lang ...]"
|
|
exit 1
|
|
fi
|
|
|
|
SRCDOMAIN=$1
|
|
DSTDOMAIN=$2
|
|
shift
|
|
shift
|
|
|
|
if [ $# = 0 ]
|
|
then
|
|
set -- `cat $BASEDIR/$SRCDOMAIN/LINGUAS`
|
|
fi
|
|
|
|
echo "Running utils/po2po"
|
|
echo "Source domain: "$SRCDOMAIN
|
|
echo "Destination domain: "$DSTDOMAIN
|
|
echo "Languages: "$@
|
|
echo ""
|
|
|
|
tmp=`mktemp`
|
|
for LANG in "$@"
|
|
do
|
|
echo "Current language: "$LANG
|
|
# merge the 2 files
|
|
msgcat --use-first -F $BASEDIR/$DSTDOMAIN/$LANG.po $BASEDIR/$SRCDOMAIN/$LANG.po >$tmp
|
|
mv $BASEDIR/$DSTDOMAIN/$LANG.po $BASEDIR/$DSTDOMAIN/$LANG.po.bak
|
|
mv $tmp $BASEDIR/$DSTDOMAIN/$LANG.po
|
|
|
|
# sync with DST pot
|
|
msgmerge --backup=none -U $BASEDIR/$DSTDOMAIN/$LANG.po $BASEDIR/$DSTDOMAIN/$DSTDOMAIN.pot
|
|
|
|
# clear those obsolete strings added by SRC, but keep ours if any
|
|
msgattrib --no-obsolete $BASEDIR/$DSTDOMAIN/$LANG.po >$tmp
|
|
msgcat --use-first -F $tmp $BASEDIR/$DSTDOMAIN/$LANG.po.bak > $BASEDIR/$DSTDOMAIN/$LANG.po
|
|
|
|
msgmerge --backup=none -U $BASEDIR/$DSTDOMAIN/$LANG.po $BASEDIR/$DSTDOMAIN/$DSTDOMAIN.pot
|
|
|
|
msgfmt --output-file=/dev/null --statistics $BASEDIR/$DSTDOMAIN/$LANG.po
|
|
|
|
done
|
|
rm $tmp
|