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