#!/bin/sh 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 -type f -name \*.\* -not -name \*.po -not -name \*.txt } | xgettext -LC -k_ -f- --from-code utf-8 -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 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 2>/dev/null` + 0)) nf=$((`grep -c ^#: "$X".fuzzy 2>/dev/null` + 0)) n=$(($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 nu0=$nu nf0=$nf if $changed; then msgmerge -F -U "$X" common.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 2>/dev/null` + 0)) nf=$((`grep -c ^#: "$X".fuzzy 2>/dev/null` + 0)) n=$(($nu + $nf)) fi if [ $n -gt 0 ]; then echo "TODO for translation $X:" 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" 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