X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=check-translations.sh;h=6a55b5ef732f3dff77418a4c06ead7660a8b2a6b;hp=307c3c2c147822be83d04f39d3b707a0104c4a91;hb=HEAD;hpb=0f0e69c6625fc4db17559e2e47f2fdaed8298076 diff --git a/check-translations.sh b/check-translations.sh index 307c3c2c14..e804cde0aa 100755 --- a/check-translations.sh +++ b/check-translations.sh @@ -1,10 +1,16 @@ #!/bin/sh +set -e + case "$1" in pot) mode=pot mail=false ;; + txt) + mode=txt + mail=false + ;; po) mode=po mail=true @@ -26,8 +32,58 @@ esac if [ x"$mode" = x"pot" ]; then { - find qcsrc -type f -name \*.\* -not -name \*.po -not -name \*.txt - } | xgettext -LC -k_ -f- --from-code utf-8 -F -o common.pot >&2 + git ls-files qcsrc | sort -u + } | xgettext -LC -k_ -f- --from-code utf-8 -F -o common.pot.new >&2 + if msgcmp -N --use-untranslated common.pot common.pot.new && msgcmp -N --use-untranslated common.pot.new common.pot; then + echo "No contentful changes to common.pot - OK." + ls -la common.pot common.pot.new + rm -f common.pot.new + else + echo "Updating common.pot. This probably should be committed." + mv -v common.pot.new common.pot + fi +fi + +if [ x"$mode" = x"txt" ]; then + { + item=`grep "^en " languages.txt` + echo "$item" + for X in common.*.po; do + [ -f "$X" ] || continue + if [ -n "$language" ]; then + if [ x"${X#common.}" != x"$language.po" ]; then + continue + fi + else + if [ x"${X#common.}" = x"en.po" ]; then + continue + fi + fi + # Note: we're only reporting EXISTING fuzzy matches in the Fuzzy count, thus -N. + po=`msgmerge -N "$X" common.pot` + ne=`printf "%s\n" "$po" | msgfmt -o /dev/null --check-format --check-header --use-fuzzy - 2>&1 | grep . | wc -l || true` + nu=`printf "%s\n" "$po" | msgattrib --untranslated - | grep -c ^#: || true` + nf=`printf "%s\n" "$po" | msgattrib --fuzzy - | grep -c ^#: || true` + nt=`printf "%s\n" "$po" | grep -c ^#: || true` + n=$(($ne + $nu + $nf)) + p=$(( (nt - n) * 100 / nt )) + echo >&2 "TODO for translation $X:" + echo >&2 "Errors: $ne" + echo >&2 "Untranslated: $nu" + echo >&2 "Fuzzy: $nf" + echo >&2 "Total: $nt" + echo >&2 "Percent: $p" + l=${X#common.} + l=${l%.po} + if ! item=`grep "^$l " languages.txt`; then + if [ "$p" -lt 50 ]; then + continue + fi + item="$l \"$l\" \"$l\" 0%" + fi + printf "%s\n" "$item" | sed -e "s/[0-9][0-9]*%/$p%/" + done + } | LC_ALL=C sort -t '"' -k4,4 fi if [ x"$mode" = x"po" ]; then @@ -42,6 +98,7 @@ if [ x"$mode" = x"po" ]; then continue fi fi + # Note: no -N here, this is the point where we allow fuzzy matching. msgmerge -F -U "$X" common.pot >&2 msgfmt -o /dev/null --check-format --check-header --use-fuzzy "$X" 2>&1 \ | grep . > "$X".errors || rm -f "$X".errors @@ -193,6 +250,7 @@ EOF continue fi fi + # Note: no -N here, this is the point where we allow fuzzy matching. msgmerge -F -U "$X" common.pot >/dev/null 2>&1 done fi