#!/usr/bin/perl

my @translator_help = (
 "#. The strings in e2fsck's problem.c can be very hard to translate,\n",
 "#. since the strings are expanded in two different ways.  First of all,\n",
 "#. there is an \@-expansion, where strings like \"\@i\" are expanded to\n",
 "#. \"inode\", and so on.  In order to make it easier for translators, the\n",
 "#. e2fsprogs po template file has been enhanced with comments that show\n",
 "#. the \@-expansion, for the strings in the problem.c file.\n",
 "#.\n",
 "#. Translators are free to use the \@-expansion facility if they so\n",
 "#. choose, by providing translations for strings in e2fsck/message.c.\n",
 "#. These translation can completely replace an expansion; for example,\n",
 "#. if \"bblock\" (which indicated that \"\@b\" would be expanded to \"block\")\n",
 "#. is translated as \"ddatenverlust\", then \"\@d\" will be expanded to\n",
 "#. \"datenverlust\".  Alternatively, translators can simply not use the\n",
 "#. \@-expansion facility at all.\n",
 "#.\n",
 "#. The second expansion which is done for e2fsck's problem.c messages is\n",
 "#. a dynamic %-expansion, which expands %i as an inode number, and so\n",
 "#. on.  A table of these expansions can be found below.  Note that\n",
 "#. %-expressions that begin with \"%D\" and \"%I\" are two-character\n",
 "#. expansions; so for example, \"%Iu\" expands to the inode's user id\n",
 "#. ownership field (inode->i_uid).  Also the \"%B\" expansion is special:\n",
 "#. it can expand to either the string \"indirect block\" (possibly preceded\n",
 "#. by the word \"double\" or \"triple\"), or the string \"block #\" immediately\n",
 "#. followed by an integer indicating a block sequence number.\n",
 "#.  \n",
 "#.	%b	<blk>			block number\n",
 "#.	%B	\"indirect block\" | \"block #\"<blkcount>	string | string+integer\n",
 "#.	%c	<blk2>			block number\n",
 "#.	%Di	<dirent> -> ino		inode number\n",
 "#.	%Dn	<dirent> -> name	string\n",
 "#.	%Dr	<dirent> -> rec_len\n",
 "#.	%Dl	<dirent> -> name_len\n",
 "#.	%Dt	<dirent> -> filetype\n",
 "#.	%d	<dir> 			inode number\n",
 "#.	%g	<group>			integer\n",
 "#.	%i	<ino>			inode number\n",
 "#.	%Is	<inode> -> i_size\n",
 "#.	%IS	<inode> -> i_extra_isize\n",
 "#.	%Ib	<inode> -> i_blocks\n",
 "#.	%Il	<inode> -> i_links_count\n",
 "#.	%Im	<inode> -> i_mode\n",
 "#.	%IM	<inode> -> i_mtime\n",
 "#.	%IF	<inode> -> i_faddr\n",
 "#.	%If	<inode> -> i_file_acl\n",
 "#.	%Id	<inode> -> i_size_high\n",
 "#.	%Iu	<inode> -> i_uid\n",
 "#.	%Ig	<inode> -> i_gid\n",
 "#.	%It	<str>			file type\n",
 "#.	%j	<ino2>			inode number\n",
 "#.	%m	<com_err error message>\n",
 "#.	%N	<num>\n",
 "#.	%p		ext2fs_get_pathname of directory <ino>\n",
 "#.	%P		ext2fs_get_pathname of <dirent>->ino with <ino2> as\n",
 "#.				the containing directory.  (If dirent is NULL\n",
 "#.				then return the pathname of directory <ino2>)\n",
 "#.	%q		ext2fs_get_pathname of directory <dir>\n",
 "#.	%Q		ext2fs_get_pathname of directory <ino> with <dir> as\n",
 "#.				the containing directory.\n",
 "#.	%s	<str>			miscellaneous string\n",
 "#.	%S		backup superblock\n",
 "#.	%X	<num>	hexadecimal format\n",
 "#.\n");

my $is_problem_file = 0;
my $save_msg;
my $msg_accum = "";
my $msg;
my $expanded = 0;
my $lines = 0;

sub do_expand {
    $msg =~ s/\@a/extended attribute/g;
    $msg =~ s/\@A/error allocating/g;
    $msg =~ s/\@b/block/g;
    $msg =~ s/\@B/bitmap/g;
    $msg =~ s/\@c/compress/g;
    $msg =~ s/\@C/conflicts with some other fs block/g;
    $msg =~ s/\@i/inode/g;
    $msg =~ s/\@I/illegal/g;
    $msg =~ s/\@j/journal/g;
    $msg =~ s/\@D/deleted/g;
    $msg =~ s/\@d/directory/g;
    $msg =~ s/\@e/entry/g;
    $msg =~ s/\@E/entry '%Dn' in %p (%i)/g;
    $msg =~ s/\@f/filesystem/g;
    $msg =~ s/\@F/for inode %i (%Q) is/g;
    $msg =~ s/\@g/group/g;
    $msg =~ s/\@h/HTREE directory inode/g;
    $msg =~ s/\@l/lost+found/g;
    $msg =~ s/\@L/is a link/g;
    $msg =~ s/\@m/multiply-claimed/g;
    $msg =~ s/\@n/invalid/g;
    $msg =~ s/\@o/orphaned/g;
    $msg =~ s/\@p/problem in/g;
    $msg =~ s/\@q/quota/g;
    $msg =~ s/\@r/root inode/g;
    $msg =~ s/\@s/should be/g;
    $msg =~ s/\@S/superblock/g;
    $msg =~ s/\@u/unattached/g;
    $msg =~ s/\@v/device/g;
    $msg =~ s/\@x/extent/g;
    $msg =~ s/\@z/zero-length/g;
    $msg =~ s/\@\@/@/g;
}


while (<>) {
    $lines++;
    if ($lines == 6) {
	print @translator_help;
    }
    if (/^#: /)
    {
	$is_problem_file = (/^#: e2fsck\/problem/) ? 1 : 0;
    }
    $msg = "";
    if (/^msgid / && $is_problem_file) {
	($msg) = /^msgid "(.*)"$/;
	$save_msgid = $_;
	if ($msg =~ /\@/) {
	    $expanded++;
	}
	&do_expand();
	if ($msg ne "") {
	    $msg_accum = $msg_accum . "#. \@-expanded: $msg\n";
	}
	next;
    }
    if (/^"/ && $is_problem_file) {
	($msg) = /^"(.*)"$/;
	$save_msgid = $save_msgid . $_;
	if ($msg =~ /\@/) {
	    $expanded++;
	}
	&do_expand();
	$msg_accum = $msg_accum . "#. \@-expanded: $msg\n";
	next;
    }
    if (/^msgstr / && $is_problem_file) {
	if ($expanded) {
	    print $msg_accum;
	}
	print $save_msgid;
	$msg_accum = "";
	$expanded = 0;
    }
    print $_;
}
