-
Notifications
You must be signed in to change notification settings - Fork 130
/
Copy pathupdatepo.sh
55 lines (43 loc) · 1.79 KB
/
updatepo.sh
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
#!bash
GITVER=`git describe --always --dirty`
GITHASH=`git rev-parse HEAD`
echo "Update gettext translation files."
DER=`pwd`
if [ ! -e "updatepo.sh" ]
then
echo "Error: Run from po/, the location of hardinfo.pot and XX.po files."
exit 1
fi
MSGTOTALOLD=`msgattrib --untranslated hardinfo.pot | grep -E "^msgstr \"\"" | wc -l`
echo "hardinfo.pot has $MSGTOTALOLD strings"
mv hardinfo.pot hardinfo.pot.old
echo "" > hardinfo.pot # empty existing file to join (-j) with
for d in hardinfo/ shell/ modules/ includes/;
do
# work from hardinfo root to get reasonable file reference comments
cd ..
echo -n `pwd`; echo "/$d ..."
find "$d" -type f -name "*.[hc]" -print | sort | xargs xgettext -j -d hardinfo -o "$DER/hardinfo.pot" -k_ -kN_ -kC_:1c,2 -kNC_:1c,2 -c/ --from-code=UTF-8
cd "$DER"
done;
MSGTOTAL=`msgattrib --untranslated hardinfo.pot | grep -E "^msgstr \"\"" | wc -l`
CMSG=`msgattrib --untranslated hardinfo.pot | grep -E "^#,.*c-format" | wc -l`
TDIFF=$(($MSGTOTAL - $MSGTOTALOLD))
CHANGE="$TDIFF"
if [ $TDIFF -gt 0 ]; then CHANGE="+$TDIFF"; fi
if [ $TDIFF -eq 0 ]; then CHANGE="no change"; fi
echo "hardinfo.pot now has $MSGTOTAL strings ($CHANGE), with $CMSG c-format strings"
echo "(as of $GITVER $GITHASH)"
for f in *.po
do
cp "$f" "$f.old"
msgmerge -q -N "$f" hardinfo.pot > tmp.po
# set/reset the X-Poedit-Basepath header
grep -v '"X-Poedit-Basepath\:[^"]*"' tmp.po | sed 's:\("Language\:[^"]*"\):\1\n"X-Poedit-Basepath\: ../\\n":' >"$f"
rm -f tmp.po
# stats
UNMSG=`msgattrib --untranslated "$f" | grep -E "^msgstr \"\"" | wc -l`
FUZMSG=`msgattrib --translated "$f" | grep -E "^#,.*fuzzy" | wc -l`
DONE=" "; if [ $UNMSG -eq 0 ]; then DONE="x"; fi
echo "- [$DONE] $f : ($UNMSG / $MSGTOTAL remain untranslated, needs work/fuzzy: $FUZMSG)"
done