]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - check-translations.sh
make check-translations.sh no longer work on non authorized systems
[xonotic/xonotic-data.pk3dir.git] / check-translations.sh
index 6cfd13dbbdaa120ae6ab63ab9793cad9491aedec..5555f2dea45d05ce16aa50e5bc4bdb5e935aabe4 100755 (executable)
@@ -1,5 +1,17 @@
 #!/bin/sh
 
+case `hostname` in
+       srv01|hagger|grawp)
+               ;;
+       *)
+               echo "Sorry, you are not supposed to use this script."
+               echo "This script is solely for use by the Xonotic Core Team."
+               echo "Unauthorized use of it can cause HIGHLY annoying merge"
+               echo "conflicts."
+               exit 1
+               ;;
+esac
+
 for VM in menu csprogs; do
        case "$VM" in
                csprogs)
@@ -16,15 +28,113 @@ for VM in menu csprogs; do
        } | xgettext -LC -k_ -f- --from-code utf-8 -o "$VM".dat.pot >&2
        for X in "$VM".dat.*.po; do
                [ -f "$X" ] || continue
+               for Y in ~/check-translations/"$X".*; do
+                       [ -f "$Y" ] || continue
+                       msgcat -F --use-first "$Y" "$X" > "$X".new
+                       mv "$X".new "$X"
+               done
                msgmerge -F -U "$X" "$VM".dat.pot >&2
-               todo=$(
-                       msgattrib --untranslated "$X" | grep -A 2147483647 "^#:"
-                       msgattrib --fuzzy "$X"        | grep -A 2147483647 "^#:"
-               )
-               if [ -n "$todo" ]; then
+               msgattrib --untranslated "$X" | grep . > "$X".untranslated || rm -f "$X".untranslated
+               msgattrib --fuzzy "$X"        | grep . > "$X".fuzzy        || rm -f "$X".fuzzy
+               nu=$((`grep -c ^#: "$X".untranslated` + 0))
+               nf=$((`grep -c ^#: "$X".fuzzy`        + 0))
+               n=$(($nu + $nf))
+               if [ $n -gt 0 ]; then
                        echo "TODO for translation $X:"
-                       echo "$todo"
-                       echo
+                       echo "Untranslated: $nu"
+                       echo "Fuzzy:        $nf"
+                       ltr=`grep '^"Last-Translator: ' "$X" | cut -d ' ' -f 2- | cut -d '\\' -f 1 | egrep -v '<LL@li.org>|<EMAIL@ADDRESS>'`
+                       ltm=`grep '^"Language-Team: ' "$X" | cut -d ' ' -f 2- | cut -d '\\' -f 1 | egrep -v '<LL@li.org>|<EMAIL@ADDRESS>'`
+                       echo "Translators:  $ltr, $ltm"
+                       case "$ltr" in
+                               '')
+                                       to=$ltm
+                                       cc=
+                                       ;;
+                               *)
+                                       to=$ltr
+                                       if [ x"$ltr" = x"$ltm" ]; then
+                                               cc=
+                                       else
+                                               cc=$ltm
+                                       fi
+                                       ;;
+                       esac
+                       if [ -n "$to" ]; then
+                               echo "To:           $to"
+                       fi
+                       if [ -n "$cc" ]; then
+                               echo "Cc:           $cc"
+                       fi
+                       if [ -n "$to" ]; then
+                               while :; do
+                                       echo "Send mail? [y/n]"
+                                       read -r yesno
+                                       case "$yesno" in
+                                               y)
+                                                       attach=
+                                                       if [ $nu -gt 0 ]; then
+                                                               attach="$attach $X.untranslated"
+                                                       fi
+                                                       if [ $nf -gt 0 ]; then
+                                                               attach="$attach $X.fuzzy"
+                                                       fi
+                                                       {
+                                                               cat <<EOF
+Hi,
+
+as you provided us with translations in the past, we kindly ask you
+to update the translation to match changes in the Xonotic source. Can
+you please work on them and provide updates to us?
+
+If you do not wish to be contacted for translation updates any more,
+please tell us in a reply to this message.
+
+EOF
+                                                               if [ $nu -gt 0 ]; then
+                                                                       cat <<EOF
+Attached to this message is a file
+$X.untranslated
+with $nu yet to be translated messages. Please translate them and reply
+with the file containing the translations in the "msgstr" fields.
+
+EOF
+                                                               fi
+                                                               if [ $nf -gt 0 ]; then
+                                                                       cat <<EOF
+Attached to this message is a file
+$X.fuzzy
+with $nf automatically generated translations. Please verify and/or fix
+them and reply with the file having been verified by you.
+
+EOF
+                                                               fi
+                                                               cat <<EOF
+Thanks in advance,
+
+Team Xonotic
+EOF
+                                                       } | mutt \
+                                                               -e "set from=\"divVerent@xonotic.org\"" \
+                                                               -e "set use_from=yes" \
+                                                               -e "set use_envelope_from=yes" \
+                                                               -s "Need update for translations: $X" \
+                                                               -c "$cc" \
+                                                               -b "divVerent@xonotic.org" \
+                                                               -a $attach -- \
+                                                               "$to"
+                                                       break
+                                                       ;;
+                                               n)
+                                                       break
+                                                       ;;
+                                       esac
+                               done
+                       fi
                fi
        done
+       for X in "$VM".dat.*.po.disabled; do
+               [ -f "$X" ] || continue
+               msgmerge -F -U "$X" "$VM".dat.pot >/dev/null 2>&1
+       done
 done