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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!/bin/bash
# updates language files from ukenglish master
master=./messages_master
targets=*/messages
#read master into an array
i=0
for l in `cat ${master}|tr " " "^"`
do
#echo ${l}
if [ "${l:0:1}" = '"' ]
then
n=`echo ${l}|cut -f1 -d,|tr -d '"'`
d=`echo ${l}|cut -f2- -d,|tr "^" " "`
# echo ${n} ${d}
ma[${n}]=${d}
mi[i]=${n}
let i=i+1
#echo $i
fi
done
nmi=${i}
#echo ${i}
for t in ${targets}
do
echo "Checking ${t} ..."
(
cm=0
cmi=${mi[${cm}]}
if [ -n "${cmi}" ]
then
for l in `cat ${t}|tr " " "^"`
do
if [ -z "${cmi}" ]
then
cmi=9999
fi
if [ "${l:0:1}" != '"' ]
then
echo ${l}|tr "^" " "
continue
else
n=`echo ${l}|cut -f1 -d,|tr -d '"'`
while [ ${n} -gt ${cmi} ] && [ ${cm} -lt ${nmi} ]
do
echo "\"${cmi}\",${ma[${mi[${cm}]}]} # needs translation"
let cm=cm+1
cmi=${mi[${cm}]}
done
echo ${l}|tr "^" " "
let cm=cm+1
cmi=${mi[${cm}]}
fi
done
fi
while [ ${cm} -lt ${nmi} ]
do
echo "\"${cmi}\",${ma[${mi[${cm}]}]}"
let cm=cm+1
cmi=${mi[${cm}]}
done
) > ${t}.new
if diff ${t} ${t}.new >/dev/null
then
rm ${t}.new
:
else
mv ${t} ${t}.sav
mv ${t}.new ${t}
git add ${t}
fi
done
exit 0
|