|
Packit |
f546b1 |
#!/bin/sh
|
|
Packit |
f546b1 |
# Shell script to download the latest translations for a given GStreamer
|
|
Packit |
f546b1 |
# package from translationproject.org
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# DOMAINS based on http://translationproject.org/extra/matrix.html
|
|
Packit |
f546b1 |
# We need to check all domains, not only po/LINGUAS, since there might be
|
|
Packit |
f546b1 |
# new translations
|
|
Packit |
f546b1 |
DOMAINS=\
|
|
Packit |
f546b1 |
"af am ar ast az be bg pt_BR bs ca zh_CN cs cy da de el eo es et eu fa fi fr fur "\
|
|
Packit |
f546b1 |
"ga en_GB gl gu he hi zh_HK hr hu id is it ja ko ku ky lg lt lv mk mn ms "\
|
|
Packit |
f546b1 |
"mt nb ne nl nn or pa pl pt rm ro ru rw sk sl sq sr sv ta tq th tk "\
|
|
Packit |
f546b1 |
"tr zh_TW uk ven vi wa xh zu"
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# for testing/debugging:
|
|
Packit |
f546b1 |
#DOMAINS="es fr hu sv pl xx"
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# check for 'diff' program
|
|
Packit |
f546b1 |
diff --version 2>/dev/null >/dev/null
|
|
Packit |
f546b1 |
if [ ! $? ]; then
|
|
Packit |
f546b1 |
echo "==== You must have the 'diff' program installed for this script ===="
|
|
Packit |
f546b1 |
exit 1
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# check for 'wget' program
|
|
Packit |
f546b1 |
wget --version 2>/dev/null >/dev/null
|
|
Packit |
f546b1 |
if [ ! $? ]; then
|
|
Packit |
f546b1 |
echo "==== You must have the 'wget' program installed for this script ===="
|
|
Packit |
f546b1 |
exit 1
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# make sure we're in the top-level directory
|
|
Packit |
f546b1 |
if [ ! -d ./po ]; then
|
|
Packit |
f546b1 |
echo "==== No ./po directory in the current working directory ===="
|
|
Packit |
f546b1 |
exit 1
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
# make sure a package argument was passed to us
|
|
Packit |
f546b1 |
if [ -z "$1" ]; then
|
|
Packit |
f546b1 |
echo "Usage: $0 PACKAGE, e.g. $0 gst-plugins-good"
|
|
Packit |
f546b1 |
exit 1
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
if test "$1" != "gstreamer" -a \
|
|
Packit |
f546b1 |
"$1" != "gst-plugins-base" -a \
|
|
Packit |
f546b1 |
"$1" != "gst-plugins-good" -a \
|
|
Packit |
f546b1 |
"$1" != "gst-plugins-ugly" -a \
|
|
Packit |
f546b1 |
"$1" != "gst-plugins-bad"; then
|
|
Packit |
f546b1 |
echo "Unexpected package '$1' ?!"
|
|
Packit |
f546b1 |
exit 1
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
PACKAGE="$1"
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
DOMAINS_TO_ADD=""
|
|
Packit |
f546b1 |
DOMAINS_UPDATED=""
|
|
Packit |
f546b1 |
DOMAINS_NOT_IN_LINGUAS=""
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
echo "Downloading latest translation files for package $PACKAGE ..."
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
for d in $DOMAINS
|
|
Packit |
f546b1 |
do
|
|
Packit |
f546b1 |
PACKAGE_PO_URL_BASE="http://translationproject.org/latest/$PACKAGE"
|
|
Packit |
f546b1 |
PO_URL="$PACKAGE_PO_URL_BASE/$d.po"
|
|
Packit |
f546b1 |
PO_FILENAME="$PACKAGE.$d.po"
|
|
Packit |
f546b1 |
if wget -q -nc -O $PO_FILENAME $PO_URL; then
|
|
Packit |
f546b1 |
# we want all .po files in UTF-8 format really, so convert if needed..
|
|
Packit |
f546b1 |
CHARSET=`grep Content-Type $PO_FILENAME | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
|
|
Packit |
f546b1 |
if test "x$CHARSET" != "xUTF-8" -a "x$CHARSET" != "xutf-8"; then
|
|
Packit |
f546b1 |
# note: things like the bugs address will be added back by make update-po
|
|
Packit |
f546b1 |
if msguniq $PO_FILENAME --no-location \
|
|
Packit |
f546b1 |
--output-file=$PO_FILENAME.utf8 \
|
|
Packit |
f546b1 |
--to-code=UTF-8; then
|
|
Packit |
f546b1 |
mv $PO_FILENAME.utf8 $PO_FILENAME
|
|
Packit |
f546b1 |
else
|
|
Packit |
f546b1 |
echo "**** $d: conversion from $CHARSET to UTF-8 failed ****"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
if [ -f "po/$d.po" ]; then
|
|
Packit |
f546b1 |
# ./po/foo.po exists, so let's check if ours matches the latest from the
|
|
Packit |
f546b1 |
# translation project website
|
|
Packit |
f546b1 |
REVDATE_NEW=`grep PO-Revision-Date $PO_FILENAME`;
|
|
Packit |
f546b1 |
REVDATE_OLD=`grep PO-Revision-Date po/$d.po`;
|
|
Packit |
f546b1 |
CHARSET_OLD=`grep Content-Type po/$d.po | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
|
|
Packit |
f546b1 |
if test "x$REVDATE_NEW" = "x$REVDATE_OLD" -a "x$CHARSET_OLD" = "xUTF-8"; then
|
|
Packit |
f546b1 |
# note: source code line markers will be removed later by make upload-po
|
|
Packit |
f546b1 |
echo "$d.po: up-to-date"
|
|
Packit |
f546b1 |
rm -f $PO_FILENAME
|
|
Packit |
f546b1 |
else
|
|
Packit |
f546b1 |
mv $PO_FILENAME "po/$d.po"
|
|
Packit |
f546b1 |
if test "x$CHARSET_OLD" != "xUTF-8" -a "x$CHARSET_OLD" != "xutf-8"; then
|
|
Packit |
f546b1 |
echo "$d.po: update (and charset converted from $CHARSET_OLD to UTF-8)"
|
|
Packit |
f546b1 |
else
|
|
Packit |
f546b1 |
echo "$d.po: updated"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
# make sure domain is listed in LINGUAS
|
|
Packit |
f546b1 |
if ! grep $d "po/LINGUAS" >/dev/null 2>/dev/null; then
|
|
Packit |
f546b1 |
DOMAINS_NOT_IN_LINGUAS="$DOMAINS_NOT_IN_LINGUAS $d"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
else
|
|
Packit |
f546b1 |
# ./po/foo.po doesn't exist, but foo.po exists on the translation project
|
|
Packit |
f546b1 |
# website, so it's probably a new translation
|
|
Packit |
f546b1 |
echo "$d.po: new language"
|
|
Packit |
f546b1 |
mv $PO_FILENAME "po/$d.po"
|
|
Packit |
f546b1 |
DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
|
|
Packit |
f546b1 |
DOMAINS_TO_ADD="$DOMAINS_TO_ADD $d"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
else
|
|
Packit |
f546b1 |
rm -f $PO_FILENAME
|
|
Packit |
f546b1 |
echo "$d.po: failure (does probably not exist)"
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
done
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
if [ -n "$DOMAINS_UPDATED" ]; then
|
|
Packit |
f546b1 |
echo "===================================================================="
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo "Language domains updated :$DOMAINS_UPDATED"
|
|
Packit |
f546b1 |
echo "Language domains to git add :$DOMAINS_TO_ADD"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo "Source: http://translationproject.org/latest/$PACKAGE/"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
if [ -n "$DOMAINS_TO_ADD" ]; then
|
|
Packit |
f546b1 |
CMD_STRING="git add"
|
|
Packit |
f546b1 |
for d in $DOMAINS_TO_ADD; do
|
|
Packit |
f546b1 |
CMD_STRING="$CMD_STRING po/$d.po"
|
|
Packit |
f546b1 |
done
|
|
Packit |
f546b1 |
echo "Please run"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo " $CMD_STRING"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo "now and add the following domains to the po/LINGUAS file:"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo " $DOMAINS_TO_ADD"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
echo "===================================================================="
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
if [ -n "$DOMAINS_NOT_IN_LINGUAS" ]; then
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo "Existing domains missing from the po/LINGUAS file:"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo " $DOMAINS_NOT_IN_LINGUAS"
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
echo
|
|
Packit |
f546b1 |
fi
|
|
Packit |
f546b1 |
|
|
Packit |
f546b1 |
|