set output_directory "."
set lang "dummy"
set files [list]
+set show_statistics 0
# parse options
-for {set i 1} {$i < $argc} {incr i} {
+for {set i 0} {$i < $argc} {incr i} {
set arg [lindex $argv $i]
- if {$arg == "--statistics" || $arg == "--tcl"} {
+ if {$arg == "--statistics"} {
+ incr show_statistics
+ continue
+ }
+ if {$arg == "--tcl"} {
+ # we know
continue
}
if {$arg == "-l"} {
}
proc flush_msg {} {
- global msgid msgstr mode lang out
+ global msgid msgstr mode lang out fuzzy
+ global translated_count fuzzy_count not_translated_count
if {![info exists msgid] || $mode == ""} {
return
}
set mode ""
+ if {$fuzzy == 1} {
+ incr fuzzy_count
+ set fuzzy 0
+ return
+ }
if {$msgid == ""} {
set prefix "set ::msgcat::header"
} else {
+ if {$msgstr == ""} {
+ incr not_translated_count
+ return
+ }
set prefix "::msgcat::mcset $lang \"[u2a $msgid]\""
+ incr translated_count
}
puts $out "$prefix \"[u2a $msgstr]\""
}
+set fuzzy 0
+set translated_count 0
+set fuzzy_count 0
+set not_translated_count 0
foreach file $files {
regsub "^.*/\(\[^/\]*\)\.po$" $file "$output_directory\\1.msg" outfile
set in [open $file "r"]
set mode ""
while {[gets $in line] >= 0} {
if {[regexp "^#" $line]} {
- flush_msg
+ if {[regexp ", fuzzy" $line]} {
+ set fuzzy 1
+ } else {
+ flush_msg
+ }
continue
} elseif {[regexp "^msgid \"(.*)\"$" $line dummy match]} {
flush_msg
close $out
}
+if {$show_statistics} {
+ set str ""
+
+ append str "$translated_count translated message"
+ if {$translated_count != 1} {
+ append str s
+ }
+
+ if {$fuzzy_count > 1} {
+ append str ", $fuzzy_count fuzzy translation"
+ if {$fuzzy_count != 1} {
+ append str s
+ }
+ }
+ if {$not_translated_count > 0} {
+ append str ", $not_translated_count untranslated message"
+ if {$not_translated_count != 1} {
+ append str s
+ }
+ }
+
+ append str .
+ puts $str
+}