#!/usr/bin/perl use XML::DT ; use Data::Dumper; my $filename = shift; my $i = 0; my $j = 0; %handler=( -outputenc => 'ISO-8859-1', -type => { tu => SEQ, }, 'body' => sub{ toxml }, 'tmx' => sub{ toxml }, 'header' => sub{ toxml }, 'seg' => sub{ print STDERR "." unless ($i % 1000); $i++; filtra($c) }, 'tuv' => sub { $tots{$v{lang}}++; [$v{lang}, $c] }, 'tu' => sub{ my $s = join("+",map { ($_->[1]=~m!^\s*$!)?1:0 } @$c); my $t = eval $s; if ($t) { $j++; return ""; } else { $c = [map { toxml("tuv", {lang=>$_->[0]}, "$_->[1]") } @$c]; toxml($q,\%v,$c); } }, ); print "\n"; print dt($filename,%handler); print STDERR "\n"; print STDERR ($i/2)." translation units\n"; print STDERR ($j/2)." translation units deleted\n"; print STDERR (($i-$j)/2)." translation units remaining\n"; sub filtra { my $txt = shift; for ($txt) { s/\|//g; s!^\s*!!; s!\s*$!!; } return $txt; }