#!/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 -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 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 "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" 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 [ $ne -gt 0 ]; then attach="$attach $X.errors" fi 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