• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2# Shell script to download the latest translations for a given GStreamer
3# package from translationproject.org
4
5
6# DOMAINS based on http://translationproject.org/extra/matrix.html
7# We need to check all domains, not only po/LINGUAS, since there might be
8# new translations
9DOMAINS=\
10"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 "\
11"ga en_GB gl gu he hi zh_HK hr hu id is it ja ko ku ky lg lt lv mk mn ms "\
12"mt nb ne nl nn or pa pl pt rm ro ru rw sk sl sq sr sv ta tq th tk "\
13"tr zh_TW uk ven vi wa xh zu"
14
15# for testing/debugging:
16#DOMAINS="es fr hu sv pl xx"
17
18# check for 'diff' program
19diff --version 2>/dev/null >/dev/null
20if [ ! $? ]; then
21  echo "==== You must have the 'diff' program installed for this script ===="
22  exit 1
23fi
24
25# check for 'wget' program
26wget --version 2>/dev/null >/dev/null
27if [ ! $? ]; then
28  echo "==== You must have the 'wget' program installed for this script ===="
29  exit 1
30fi
31
32# make sure we're in the top-level directory
33if [ ! -d ./po ]; then
34  echo "==== No ./po directory in the current working directory ===="
35  exit 1
36fi
37
38# make sure a package argument was passed to us
39if [ -z "$1" ]; then
40  echo "Usage: $0 PACKAGE, e.g. $0 gst-plugins-good"
41  exit 1
42fi
43
44if test "$1" != "gstreamer" -a \
45        "$1" != "gst-plugins-base" -a \
46        "$1" != "gst-plugins-good" -a \
47        "$1" != "gst-plugins-ugly" -a \
48        "$1" != "gst-plugins-bad"; then
49  echo "Unexpected package '$1' ?!"
50  exit 1
51fi
52
53PACKAGE="$1"
54
55DOMAINS_TO_ADD=""
56DOMAINS_UPDATED=""
57DOMAINS_NOT_IN_LINGUAS=""
58
59echo "Downloading latest translation files for package $PACKAGE ..."
60echo
61
62for d in $DOMAINS
63do
64  PACKAGE_PO_URL_BASE="http://translationproject.org/latest/$PACKAGE"
65  PO_URL="$PACKAGE_PO_URL_BASE/$d.po"
66  PO_FILENAME="$PACKAGE.$d.po"
67  if wget -q -nc -O $PO_FILENAME $PO_URL; then
68    # we want all .po files in UTF-8 format really, so convert if needed..
69    CHARSET=`grep Content-Type $PO_FILENAME | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
70    if test "x$CHARSET" != "xUTF-8" -a "x$CHARSET" != "xutf-8"; then
71      # note: things like the bugs address will be added back by make update-po
72      if msguniq $PO_FILENAME --no-location \
73                              --output-file=$PO_FILENAME.utf8 \
74                              --to-code=UTF-8; then
75        mv $PO_FILENAME.utf8 $PO_FILENAME
76      else
77        echo "**** $d: conversion from $CHARSET to UTF-8 failed ****"
78      fi
79    fi
80    if [ -f "po/$d.po" ]; then
81      # ./po/foo.po exists, so let's check if ours matches the latest from the
82      # translation project website
83      REVDATE_NEW=`grep PO-Revision-Date $PO_FILENAME`;
84      REVDATE_OLD=`grep PO-Revision-Date po/$d.po`;
85      CHARSET_OLD=`grep Content-Type po/$d.po | sed -e 's/.*charset=\(.*\)\\\\n.*/\1/'`
86      if test "x$REVDATE_NEW" = "x$REVDATE_OLD" -a "x$CHARSET_OLD" = "xUTF-8"; then
87        # note: source code line markers will be removed later by make upload-po
88        echo "$d.po: up-to-date"
89        rm -f $PO_FILENAME
90      else
91        mv $PO_FILENAME "po/$d.po"
92        if test "x$CHARSET_OLD" != "xUTF-8" -a "x$CHARSET_OLD" != "xutf-8"; then
93          echo "$d.po: update (and charset converted from $CHARSET_OLD to UTF-8)"
94        else
95          echo "$d.po: updated"
96        fi
97        DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
98      fi
99      # make sure domain is listed in LINGUAS
100      if ! grep $d "po/LINGUAS" >/dev/null 2>/dev/null; then
101        DOMAINS_NOT_IN_LINGUAS="$DOMAINS_NOT_IN_LINGUAS $d"
102      fi
103    else
104      # ./po/foo.po doesn't exist, but foo.po exists on the translation project
105      # website, so it's probably a new translation
106      echo "$d.po: new language"
107      mv $PO_FILENAME "po/$d.po"
108      DOMAINS_UPDATED="$DOMAINS_UPDATED $d"
109      DOMAINS_TO_ADD="$DOMAINS_TO_ADD $d"
110    fi
111  else
112    rm -f $PO_FILENAME
113    echo "$d.po: failure (does probably not exist)"
114  fi
115done
116
117if [ -n "$DOMAINS_UPDATED" ]; then
118  echo "===================================================================="
119  echo
120  echo "Language domains updated    :$DOMAINS_UPDATED"
121  echo "Language domains to git add :$DOMAINS_TO_ADD"
122  echo
123  echo "Source: http://translationproject.org/latest/$PACKAGE/"
124  echo
125  if [ -n "$DOMAINS_TO_ADD" ]; then
126    CMD_STRING="git add"
127    for d in $DOMAINS_TO_ADD; do
128      CMD_STRING="$CMD_STRING po/$d.po"
129    done
130    echo "Please run"
131    echo
132    echo "  $CMD_STRING"
133    echo
134    echo "now and add the following domains to the po/LINGUAS file:"
135    echo
136    echo "  $DOMAINS_TO_ADD"
137    echo
138    echo
139  fi
140  echo "===================================================================="
141fi
142
143if [ -n "$DOMAINS_NOT_IN_LINGUAS" ]; then
144  echo
145  echo "Existing domains missing from the po/LINGUAS file:"
146  echo
147  echo "  $DOMAINS_NOT_IN_LINGUAS"
148  echo
149  echo
150fi
151
152
153