Blame common/download-translations

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