esac
if [ x"$mode" = x"pot" ]; then
+ make QCC="../../../../gmqcc/gmqcc" clean
+ make QCC="../../../../gmqcc/gmqcc"
{
- find qcsrc -type f -name \*.\* -not -name \*.po -not -name \*.txt
- } | xgettext -LC -k_ -f- --from-code utf-8 -F -o common.pot >&2
+ grep -h '^\.' .tmp/*_includes.txt | cut -d ' ' -f 2 | sed -e 's,^,qcsrc/,' | while IFS= read -r name; do
+ while :; do
+ case "$name" in
+ */./*)
+ name=${name%%/./*}/${name#*/./}
+ ;;
+ ./*)
+ name=${name#./}
+ ;;
+ */*/../*)
+ before=${name%%/../*}
+ before=${before%/*}
+ name=$before/${name#*/../}
+ ;;
+ */../*)
+ name=${name#*/../}
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+ echo "$name"
+ done | sort -u
+ } | xgettext -LC -k_ -f- --from-code utf-8 -F -o common.pot.new >&2
+ if msgcmp -N --use-untranslated common.pot common.pot.new; then
+ echo "No contentful changes to common.pot - OK."
+ rm -f common.pot.new
+ else
+ echo "Updating common.pot. This probably should be committed."
+ mv -v common.pot.new common.pot
+ fi
fi
if [ x"$mode" = x"txt" ]; then
- echo "en English \"English\""
- for X in common.*.po; do
- [ -f "$X" ] || continue
- if [ -n "$language" ]; then
- if [ x"${X#common.}" != x"$language.po" ]; then
- continue
- fi
- else
- if [ x"${X#common.}" = x"en.po" ]; then
- continue
+ {
+ item=`grep "^en " languages.txt`
+ echo "$item"
+ for X in common.*.po; do
+ [ -f "$X" ] || continue
+ if [ -n "$language" ]; then
+ if [ x"${X#common.}" != x"$language.po" ]; then
+ continue
+ fi
+ else
+ if [ x"${X#common.}" = x"en.po" ]; then
+ continue
+ fi
fi
- fi
- po=`msgmerge -N "$X" common.pot`
- ne=`printf "%s\n" "$po" | msgfmt -o /dev/null --check-format --check-header --use-fuzzy - 2>&1 | grep . | wc -l`
- nu=`printf "%s\n" "$po" | msgattrib --untranslated - | grep -c ^#:`
- nf=`printf "%s\n" "$po" | msgattrib --fuzzy - | grep -c ^#:`
- nt=`printf "%s\n" "$po" | grep -c ^#:`
- n=$(($ne + $nu + $nf))
- p=$(( (nt - n) * 100 / nt ))
- echo >&2 "TODO for translation $X:"
- echo >&2 "Errors: $ne"
- echo >&2 "Untranslated: $nu"
- echo >&2 "Fuzzy: $nf"
- echo >&2 "Total: $nt"
- echo >&2 "Percent: $p"
- l=${X#common.}
- l=${l%.po}
- if ! item=`grep "^$l " languages.txt`; then
- if [ "$p" -lt 50 ]; then
- continue
+ # Note: we're only reporting EXISTING fuzzy matches in the Fuzzy count, thus -N.
+ po=`msgmerge -N "$X" common.pot`
+ ne=`printf "%s\n" "$po" | msgfmt -o /dev/null --check-format --check-header --use-fuzzy - 2>&1 | grep . | wc -l`
+ nu=`printf "%s\n" "$po" | msgattrib --untranslated - | grep -c ^#:`
+ nf=`printf "%s\n" "$po" | msgattrib --fuzzy - | grep -c ^#:`
+ nt=`printf "%s\n" "$po" | grep -c ^#:`
+ n=$(($ne + $nu + $nf))
+ p=$(( (nt - n) * 100 / nt ))
+ echo >&2 "TODO for translation $X:"
+ echo >&2 "Errors: $ne"
+ echo >&2 "Untranslated: $nu"
+ echo >&2 "Fuzzy: $nf"
+ echo >&2 "Total: $nt"
+ echo >&2 "Percent: $p"
+ l=${X#common.}
+ l=${l%.po}
+ if ! item=`grep "^$l " languages.txt`; then
+ if [ "$p" -lt 50 ]; then
+ continue
+ fi
+ item="$l \"$l\" \"$l\" 0%"
fi
- item="$l $l \"$l (0%)\""
- fi
- printf "%s\n" "$item" | sed -e "s/([0-9][0-9]*%)/($p%)/"
- done
+ printf "%s\n" "$item" | sed -e "s/[0-9][0-9]*%/$p%/"
+ done
+ } | LC_ALL=C sort -t '"' -k4,4
fi
if [ x"$mode" = x"po" ]; then
continue
fi
fi
+ # Note: no -N here, this is the point where we allow fuzzy matching.
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
continue
fi
fi
+ # Note: no -N here, this is the point where we allow fuzzy matching.
msgmerge -F -U "$X" common.pot >/dev/null 2>&1
done
fi