| #!/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 az be bg pt_BR bs ca zh_CN cs cy da de el eo es et eu fa fi fr "\ |
| "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 |
| |
| |