summaryrefslogtreecommitdiff
path: root/scripts/import_translation.sh
blob: fc4117847484226645de8c0144df1e0c2d145be6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash

# This script imports one translation from launchpad
# The url to the .po file should be provided as an argument

if [[ $1 == "" ]]; then
	echo "I need the po URL from Launchpad"
	exit
fi

id=$(echo $1|cut -d'/' -f4)
po=$(echo $1|cut -d'/' -f5|cut -c 13-)

rm -rf navit
git clone git@github.com:navit-gps/navit.git
cd navit/
[ -d po/import_queue ] && exit -1
mkdir po/import_queue
i="po/import_queue/$po"
wget $1 -O po/import_queue/$po

# Let's fix the headers of the .po files in the import queue
for i in po/import_queue/*.po; do
	b=$(basename $i)
	po=${b#*-}
	code=${po%.*}
        git checkout -b i18n/$code || exit -1
	lname=$(head -n1 ${i} | sed 's/# \(.*\) translation.\{0,1\} for navit/\1/')
        if [[ $lname == "" ]]; then
                echo "Cannot find the language name in the header of $i"
                exit 1
        fi
	d=$(date +"%Y")
        echo "# ${lname} translations for navit" > po/${po}.header
        echo "# Copyright (C) 2006-${d} The Navit Team" >> po/${po}.header
        echo "# This file is distributed under the same license as the navit package." >> po/${po}.header
        echo "# Many thanks to the contributors of this translation:" >> po/${po}.header
	# Build a clean list of the contributors
	IFS=$'\n'
	echo "Downloading https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details"
	contributors=$(wget -q https://translations.launchpad.net/navit/trunk/+pots/navit/${code}/+details -O - | grep -E '^              <a href=".+?" class="sprite person">')
        for user in $contributors; do
                url=$(echo $user|cut -d'"' -f2)
                name=$(echo $user|cut -d'>' -f2|cut -d'<' -f1)
                echo "# $name $url" >> po/${po}.header
        done
        echo ''  >> po/${po}.header
        echo 'msgid ""'  >> po/${po}.header

        # We remove two tags that just generate noise
        sed -i '/X-Launchpad-Export-Date/d' ${i}
        sed -i '/X-Generator/d' ${i}
        sed -i '/POT-Creation-Date/d' ${i}

        # Let's put the translation from launchpad without the header
        mv po/${po}.header po/${po}.in
        sed '1,/msgid ""/ d' ${i} >> po/${po}.in

        # We remove extra whitespaces to make the sanity checks happy
        sed -i -e 's/ *$//' po/${po}.in

	git status
	git add po/${po}.in && rm $i
	git commit -m "Update:i18n:Updated ${lname} translation from launchpad" po/${po}.in
	git diff trunk
	echo "Going to push $id/$code in branch i18n/$code, press a key"
	read -r
        git push --set-upstream origin i18n/${code}
done