X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=check-translations.sh;h=654dae4c256c8c8afd2a5061e840781d568e03dd;hb=b3602d50e99c7a8cdd931fab0d075da21d75120b;hp=fb1f68f32a64fecb6dd70b1334372defff54510c;hpb=9f1d077757a4ebb6bffc43da0b626cca04ea12e3;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/check-translations.sh b/check-translations.sh index fb1f68f32..654dae4c2 100755 --- a/check-translations.sh +++ b/check-translations.sh @@ -1,36 +1,92 @@ #!/bin/sh -for VM in menu csprogs; do - case "$VM" in - csprogs) - VMD=client - ;; - *) - VMD=$VM - ;; - esac +case "$1" in + pot) + mode=pot + mail=false + ;; + po) + mode=po + mail=true + language=$2 + ;; + '') + 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 + ;; + *) + mode=po + mail=false + language=$1 + ;; +esac + +if [ x"$mode" = x"pot" ]; then { - find qcsrc/"$VMD" -type f -not -name \*.po -not -name \*.txt - find qcsrc/common -type f -not -name \*.po -not -name \*.txt - find qcsrc/server -type f -name w_\*.qc - } | xgettext -LC -k_ -f- --from-code utf-8 -o "$VM".dat.pot >&2 - for X in "$VM".dat.*.po; do + find qcsrc -type f -name \*.\* -not -name \*.po -not -name \*.txt + } | xgettext -LC -k_ -f- --from-code utf-8 -F -o common.pot >&2 +fi + +if [ x"$mode" = x"po" ]; then + for X in common.*.po; do [ -f "$X" ] || continue + if [ -n "$language" ]; then + if [ x"${X#*.dat.}" != x"$language.po" ]; then + continue + fi + else + if [ x"${X#*.dat.}" = x"en.po" ]; then + continue + fi + fi + 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 + msgattrib --untranslated "$X" | grep . > "$X".untranslated || rm -f "$X".untranslated + msgattrib --fuzzy "$X" | grep . > "$X".fuzzy || rm -f "$X".fuzzy + ne=$((`wc -l < "$X".errors 2>/dev/null` + 0)) + nu=$((`grep -c ^#: "$X".untranslated 2>/dev/null` + 0)) + nf=$((`grep -c ^#: "$X".fuzzy 2>/dev/null` + 0)) + n=$(($ne + $nu + $nf)) + changed=false for Y in ~/check-translations/"$X".*; do [ -f "$Y" ] || continue + echo "Merging $Y..." + vim -E "$Y" </dev/null; then + echo "File $Y has syntax errors. Skipped." + continue + fi msgcat -F --use-first "$Y" "$X" > "$X".new mv "$X".new "$X" + changed=true done - msgmerge -F -U "$X" "$VM".dat.pot >&2 - 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)) + ne0=$ne + nu0=$nu + nf0=$nf + if $changed; then + msgfmt -o /dev/null --check-format --check-header --use-fuzzy "$X" 2>&1 \ + | grep . > "$X".errors || rm -f "$X".errors + msgattrib --untranslated "$X" | grep . > "$X".untranslated || rm -f "$X".untranslated + msgattrib --fuzzy "$X" | grep . > "$X".fuzzy || rm -f "$X".fuzzy + ne=$((`wc -l < "$X".errors 2>/dev/null` + 0)) + nu=$((`grep -c ^#: "$X".untranslated 2>/dev/null` + 0)) + nf=$((`grep -c ^#: "$X".fuzzy 2>/dev/null` + 0)) + n=$(($ne + $nu + $nf)) + fi if [ $n -gt 0 ]; then echo "TODO for translation $X:" - echo "Untranslated: $nu" - echo "Fuzzy: $nf" + echo "Errors: $ne (was: $ne0)" + echo "Untranslated: $nu (was: $nu0)" + echo "Fuzzy: $nf (was: $nf0)" ltr=`grep '^"Last-Translator: ' "$X" | cut -d ' ' -f 2- | cut -d '\\' -f 1 | egrep -v '|'` ltm=`grep '^"Language-Team: ' "$X" | cut -d ' ' -f 2- | cut -d '\\' -f 1 | egrep -v '|'` echo "Translators: $ltr, $ltm" @@ -55,12 +111,15 @@ for VM in menu csprogs; do echo "Cc: $cc" fi if [ -n "$to" ]; then - while :; do + while $mail; do echo "Send mail? [y/n]" read -r yesno case "$yesno" in y) attach= + if [ $ne -gt 0 ]; then + attach="$attach $X.errors" + fi if [ $nu -gt 0 ]; then attach="$attach $X.untranslated" fi @@ -75,6 +134,9 @@ 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? +For reference, the current version of the translation file is at: +http://git.xonotic.org/?p=xonotic/xonotic-data.pk3dir.git;a=blob;f=$X + If you do not wish to be contacted for translation updates any more, please tell us in a reply to this message. @@ -108,7 +170,7 @@ EOF -e "set use_envelope_from=yes" \ -s "Need update for translations: $X" \ -c "$cc" \ - -b "divVerent@xonotic.org" \ + -b "admin@xonotic.org" \ -a $attach -- \ "$to" break @@ -119,10 +181,18 @@ EOF esac done fi + else + echo "$X is complete!" fi done - for X in "$VM".dat.*.po.disabled; do + + for X in common.*.po.disabled; do [ -f "$X" ] || continue - msgmerge -F -U "$X" "$VM".dat.pot >/dev/null 2>&1 + if [ -n "$language" ]; then + if [ x"${X#*.dat.}" != x"$language.po" ]; then + continue + fi + fi + msgmerge -F -U "$X" common.pot >/dev/null 2>&1 done -done +fi