# HG changeset patch # User mow # Date 1239358722 0 # Node ID 163e3efc1c027561091ddf7b353199c03ea4863b # Parent fd445edf8468102f03db5e53b8292fb983381b95 Fix the broken statistic generation The output of msgfmt has different format if no fuzzy translations (or even no translated) are available. I fixed that by parsing the output of msgfmt more intelligent. Drawback of the solution is that the parsing will not work if the output of msgfmt use not the strings "translated messages", "fuzzy translations" and "untranslated messages". diff -r fd445edf8468 -r 163e3efc1c02 po/gen_translations_stats.sh --- a/po/gen_translations_stats.sh Fri Apr 10 09:47:40 2009 +0000 +++ b/po/gen_translations_stats.sh Fri Apr 10 10:18:42 2009 +0000 @@ -17,12 +17,16 @@ (echo "Language Comp(%) Trans Fuzzy Untrans Total"; \ for i in *.po; do msgfmt --statistics -o /dev/null $i 2>&1 \ - | sed 's/^\([0-9]\+ \)[^0-9]*\([0-9]\+ \)\?[^0-9]*\([0-9]\+ \)\?[^0-9]*$/\1\2\3/g' \ - | awk '{ \ - tot = $1 + $2 + $3; \ - if (tot != 0) \ - printf "%8.0f|%s|%7.2f|%5d|%5d|%7d|%5d\n",\ - ($1*100/tot)*100, "'"${i%%.po}"'", $1*100/tot, tot-($2+$3), $2, $3, tot}' ; + | perl -ne ' + my ($tr_done, $tr_fuzz, $tr_un) = (0, 0, 0); + $tr_done = $1 if /(\d+) translated messages/; + $tr_fuzz = $1 if /(\d+) fuzzy translations/; + $tr_un = $1 if /(\d+) untranslated messages/; + my $tr_tot = $tr_done + $tr_fuzz + $tr_un; + printf "%8.0f|%s|%7.2f|%5d|%5d|%7d|%5d\n", + 10000*$tr_done/$tr_tot, "'"${i%%.po}"'", + 100*$tr_done/$tr_tot, $tr_done, $tr_fuzz, $tr_un, + $tr_tot if $tr_tot;'; done | sort -t '|' -b -k1,1nr -k2,2 | sed 's/^ *[0-9]*//' | tr ' |' '| ' ) | column -t -c 80 | tr '|' ' ' echo