l10n-configure.sh revision 10943
#!/bin/sh -x
#
# ALL_LINGUAS for Sun
# We modify ALL_LINGUAS of configure.in in all GNOME modules.
# Our l10n team translates and revises language of $SUN_ALL_LINGUAS.
#
PROGNAME=`basename $0`
SUN_ALL_LINGUAS="cs de es fr hu it ja ko pl pt_BR ru sv zh_CN zh_HK zh_TW"
ENABLE_SUN_ALL_LINGUAS=1
DISABLE_GNU_EXTENSIONS=0
L10N_POTFILES=${L10N_POTFILES:-"no"}
CONFIGURE=
usage () {
echo \
"This script modify ALL_LINGUAS parameter in configure.in file. \n" \
"\n" \
"usage: $PROGNAME [OPTION...] \n" \
" -d, --disable-sun-linguas Do not modify ALL_LINGUAS. \n" \
" -p, --enable-pot Generate .pot file for internal. \n" \
" -x, --disable-gnu-extensions Remove GNU extensions in po/*.po files.\n" \
" -h, --help Show this message. \n" \
""
}
init () {
while getopts "h(help)(usage)d(disable-sun-linguas)p(enable-pot)x(disable-gnu-extensions)" opt
do
case $opt in
h) usage $@;
exit 0;;
d) ENABLE_SUN_ALL_LINGUAS=0;;
p) L10N_POTFILES="yes";;
x) DISABLE_GNU_EXTENSIONS=1;;
esac
done
if [ -f configure.in ] ; then
CONFIGURE=configure.in
elif [ -f configure.ac ] ; then
CONFIGURE=configure.ac
fi
}
pre_check () {
if [ "$CONFIGURE" = "" -a $ENABLE_SUN_ALL_LINGUAS -eq 1 ] ; then
echo "#### Not Found configure.in"
exit 0
fi
if [ ! -d po ] ; then
echo "#### Not Found po dir"
exit 0
fi
}
# GNU .po has several GNU extensions.
# http://www.gnu.org/software/libc/manual/html_node/Formatting-Calendar-Time.html
# http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00881.html
disable_gnu_extensions () {
cd po
# Replace "%-m" with "%m" for strftime(3C).
# Replace "%Id" with "%d" for printf(3C) and don't use "." for the workaround
# Replace "%l" with "%I" for strptime(3C) and also grep %M for the workaround
# so that we do not change %ld for printf(3C).
# Replace "%k" with "%H" for strptime(3C).
for po in `egrep -l \
'^msgstr ".*%[_0^-][md].*"|'\
'^msgstr "%I[doxXnfFeEgGaAcspCSm]"|'\
'^msgstr ".*%[_0^-]*l.*%[MpP].*"|'\
'^msgstr ".*%[MpP].*%[_0^-]*l.*"|'\
'^msgstr ".*%[_0^-]*k.*"'\
*.po`
do
env LANG=C LC_ALL=C \
sed -e '/^msgstr "/s/%[_0^-]\([md]\)/%\1/g' $po |
env LANG=C LC_ALL=C \
sed -e 's/^\(msgstr "%\)I\([doxXnfFeEgGaAcspCSm]"\)/\1\2/g' |
env LANG=C LC_ALL=C \
sed -e '/^msgstr ".*%[_0^-]*l.*%[MpP]/s/%[_0^-]*l/%I/g' |
env LANG=C LC_ALL=C \
sed -e '/^msgstr ".*%[MpP].*%[_0^-]*l/s/%[_0^-]*l/%I/g' |
env LANG=C LC_ALL=C \
sed -e '/^msgstr "/s/%[_0^-]*k/%H/g' > $po.$$
mv $po.$$ $po
done
cd ..
}
apply_sun_all_linguas_file () {
PO_LINGUAS=`cat po/LINGUAS | grep -v "^#"`
PO_LINGUAS=`echo "$PO_LINGUAS $SUN_ALL_LINGUAS"\
| tr " " "\n" \
| env LC_ALL=C LANG=C sort \
| uniq \
| tr "\n" " "`
SAVE_COMMENT=`grep "^#" po/LINGUAS`
echo "$SAVE_COMMENT" > po/LINGUAS
echo "$PO_LINGUAS" >> po/LINGUAS
}
apply_sun_all_linguas_configure () {
ALL_LINGUAS=`grep '^ALL_LINGUAS=' $CONFIGURE \
| sed -e 's/ALL_LINGUAS=//' -e 's/"//g'`
ALL_LINGUAS=`echo "${ALL_LINGUAS} ${SUN_ALL_LINGUAS}"\
| tr " " "\n" \
| sort \
| uniq \
| tr "\n" " "`
DQ='"'
sed -e "/^ALL_LINGUAS=/s/^\(ALL_LINGUAS=\)\(.*\)/\1$DQ${ALL_LINGUAS}$DQ/" \
$CONFIGURE > ${CONFIGURE}.chg
mv ${CONFIGURE}.chg $CONFIGURE
}
apply_sun_all_linguas () {
if [ -f po/LINGUAS ] ; then
apply_sun_all_linguas_file
else
apply_sun_all_linguas_configure
fi
}
update_po () {
PO_DIRS=po*/POTFILES.in
PO_DIRS=`echo $PO_DIRS | sed -e 's|/POTFILES.in||g'`
for po in $PO_DIRS
do
#
# This is needed to avoid build errors.
#
(cd $po; touch `echo "$SUN_ALL_LINGUAS" | sed -e 's/\([a-z,_,A-Z]*\)/\1.po/g'`)
done
}
update_pot () {
OS=`uname -s`
if [ "$OS" = Linux ] ; then
TOPDIR=/usr/src/packages
else
TOPDIR=/jds/packages
fi
POT_DATA='"POT-Creation-Date: '
cd po
rm -f *.pot
echo "[encoding: UTF-8]" > POTFILES.in
intltool-update --maintain 2>/dev/null
cat missing >> POTFILES.in
intltool-update --pot
POT=`ls *.pot`
if [ "x$POT" != "x" ] ; then
sed -e "/^$POT_DATA/d" $POT > ${POT}.$$
mv ${POT}.$$ $POT
mkdir -p $TOPDIR/l10n/pot
mkdir -p $TOPDIR/l10n/diff
mkdir -p $TOPDIR/l10n/new
if [ -f $TOPDIR/l10n/pot/$POT ] ; then
diff $TOPDIR/l10n/pot/$POT $POT > ${POT}.diff
if [ -s ${POT}.diff ] ; then
cp ${POT}.diff $TOPDIR/l10n/diff
echo "#### Translation should be updated!!!"
fi
else
cp $POT $TOPDIR/l10n/pot
cp $POT $TOPDIR/l10n/new
fi
else
echo "#### Failed to create the potfile in `pwd`"
fi
cd ..
}
main () {
init $@
pre_check
if [ $DISABLE_GNU_EXTENSIONS -eq 1 ] ; then
disable_gnu_extensions
fi
if [ $ENABLE_SUN_ALL_LINGUAS -eq 1 ] ; then
apply_sun_all_linguas
update_po
fi
if [ "x$L10N_POTFILES" = "xyes" ] ; then
update_pot
fi
}
main $@