smeserver-devtools/additional/update-po

66 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
usage()
{
if [ -n "$1" ]; then
echo -e $*
fi
echo
echo "Usage: "
echo " update-po \$domain \$src_dir \$src_file \$src_file ..."
echo
echo "For example, to generate po/\$lang/blades-client.po files for all "
echo "existing language directories, you would call it like this:"
echo
echo " update_po blades-client \\"
echo " \$PWD/root/usr/share/perl5/vendor_perl/esmith/Blades \\"
echo " Blade.pm Connection.pm Error.pm Package.pm Session.pm"
echo
echo "This assumes that all source files are in that same directory, "
echo "and that no other options are needed. This script is a first pass"
echo "so we may need to augment it as we go."
exit 1
}
DOMAIN=$1
SRC_DIR=$2
shift 2
SRC_FILES=$*
# Sanity checks
if [ -z "$DOMAIN" ]; then
usage "ERROR: Missing \$domain parameter"
fi
if [ ! -d "$SRC_DIR" ]; then
usage "ERROR: Invalid or missing \$src_dir parameter"
fi
if [ -z "$SRC_FILES" ]; then
usage "ERROR: You must specify at least one \$src_file parameter"
fi
for file in $SRC_FILES; do
if [ ! -f "$SRC_DIR/$file" ]; then
usage "ERROR: \$src_file not found: $file"
fi
done
# Do it
PO_REF="${DOMAIN}.po"
# Send stderr to /dev/null because xgettext complains about irrelevant
# things due to the fact that it thinks it is reading C++ code.
xgettext -C -d ${DOMAIN} -k'gettext' -D $SRC_DIR $SRC_FILES 2>/dev/null
if [ $? -ne 0 ]; then
usage "Uh-oh, xgettext failed!\n" \
"Try running it manually and checking the errors:\n" \
"\txgettext -C -d ${DOMAIN} -k'gettext' -D $SRC_DIR $SRC_FILES"
fi
for lang in $(ls --color=never po -I CVS); do
echo -n "updating .po file for $DOMAIN ($lang)"
PO="$PWD/po/$lang/${DOMAIN}.po"
msgmerge $PO $PO_REF -o $PO
done
rm $PO_REF