/usr/bin/perl -ne '
if (/\$(".*[^\\]")/)
{
	$_ = $1;
	s/\\/\\\\/g;
	print $_, ";;;", $ARGV, ":" , $. , "\n" ;
} elsif (/\$\"(.*)$/)
	{
		$_ = $1;
		s/\\/\\\\/g;
		$line=$.;
		$msg="\"" . $_ . "\\n";
		$_ = <>;
		chomp;
		s/\\/\\\\/g;
		while(!/[^\\]"/)
		{
			s/"/\\"/g;
			$msg .= $_ . "\\n";
			$_ = <>;
			chomp;
			s/\\/\\\\/g;
		}
		s/^(.*[^\\])".*$/$1/;
		s/"/\\"/g;
		$msg.=$_ . "\"";
		print $msg, ";;;", $ARGV, ":" , $line , "\n" ;
	}
close(ARGV) if (eof);
' $@ | sort |
perl -ne '
BEGIN {
	$saved_msgid="";
	$saved_pos="";
}

chomp;
($msgid,$pos)=split /\;\;\;/;

if ( $msgid eq $saved_msgid )
{
	$saved_pos = $saved_pos . " " . $pos;
} else
{
	if ($saved_msgid ne "")
	{
		print "#: " , $saved_pos , "\n";
		print "msgid ", $saved_msgid , "\n";
		print "msgstr \"\"\n\n";
	}
	$saved_pos = $pos;
	$saved_msgid = $msgid;
	$saved_msgid =~ s/([^\\])\\n/$1\\n"\n"/g;
}

END {
	if ($saved_msgid ne "")
	{
		print "#: ", $saved_pos, "\n";
		print "msgid ", $saved_msgid, "\n";
		print "msgstr \"\"\n\n";
	}
}
'
