]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - check-translations.sh
Nades code: don't use booleans as array indexes for m_projectile, optimize spawn_held...
[xonotic/xonotic-data.pk3dir.git] / check-translations.sh
index a7406532d8d61829e952a19d91ccc5ccb0e28494..e804cde0aa555be4acba34fe51aee6f84b525b43 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+set -e
+
 case "$1" in
        pot)
                mode=pot
@@ -30,8 +32,16 @@ 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
@@ -49,11 +59,12 @@ if [ x"$mode" = x"txt" ]; 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`
-                       nu=`printf "%s\n" "$po" | msgattrib --untranslated - | grep -c ^#:`
-                       nf=`printf "%s\n" "$po" | msgattrib --fuzzy - | grep -c ^#:`
-                       nt=`printf "%s\n" "$po" | grep -c ^#:`
+                       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:"
@@ -68,11 +79,11 @@ if [ x"$mode" = x"txt" ]; then
                                if [ "$p" -lt 50 ]; then
                                        continue
                                fi
-                               item="$l $l \"$l\" 0%"
+                               item="$l \"$l\" \"$l\" 0%"
                        fi
                        printf "%s\n" "$item" | sed -e "s/[0-9][0-9]*%/$p%/"
                done
-       } | tr '"' '\t' | sort -k3 | tr '\t' '"'
+       } | LC_ALL=C sort -t '"' -k4,4
 fi
 
 if [ x"$mode" = x"po" ]; then
@@ -87,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
@@ -238,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