changeset 1534:163e3efc1c02

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".
author mow
date Fri, 10 Apr 2009 10:18:42 +0000
parents fd445edf8468
children 760f585d9fa0
files po/gen_translations_stats.sh
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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