]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - check-translations.sh
Merge branch 'master' into terencehill/arena_stuff
[xonotic/xonotic-data.pk3dir.git] / check-translations.sh
index 063920c622d42cc57ea31cec3fbe65df5f8401e1..fb1f68f32a64fecb6dd70b1334372defff54510c 100755 (executable)
@@ -16,15 +16,109 @@ 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