Blame common/download-translations

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