X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=check-translations.sh;h=3dc3222838a62f969b6ff0b218439b15bb6eb3e9;hp=c57b647625884d04cc443d8f17ea640b3c2f6456;hb=b8e3716086cc9249b2f93f86f082e1acbc922383;hpb=9654b1d8de0f97fafc8ceea5e76a96f6154fc6f2 diff --git a/check-translations.sh b/check-translations.sh index c57b64762..3dc322283 100755 --- a/check-translations.sh +++ b/check-translations.sh @@ -1,14 +1,169 @@ -find qcsrc/menu -type f -not -name \*.po -not -name \*.txt | xgettext -LC -k_ -f- --from-code utf-8 -o menu.dat.pot >&2 - -for X in menu.dat.*.po; do - msgmerge -U "$X" menu.dat.pot >&2 - todo=$( - msgattrib --untranslated "$X" | grep -A 2147483647 "^#:" - msgattrib --fuzzy "$X" | grep -A 2147483647 "^#:" - ) - if [ -n "$todo" ]; then - echo "TODO for translation $X:" - echo "$todo" - echo +#!/bin/sh + +case "$1" in + pot) + mode=pot + mail=true + ;; + po) + mode=po + mail=true + language= + ;; + '') + 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 + +for VM in menu csprogs; do + case "$VM" in + csprogs) + VMD=client + ;; + *) + VMD=$VM + ;; + 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 + fi + + if [ x"$mode" = x"po" ]; then + for X in "$VM".dat.*.po; do + [ -f "$X" ] || continue + if [ -n "$language" ]; then + if [ x"${X#*.dat.}" != x"$language.po" ]; then + continue + fi + fi + 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 + 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 "Untranslated: $nu" + echo "Fuzzy: $nf" + 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" + 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 $mail; 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 </dev/null 2>&1 + done fi done