#!/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_dir_acl\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 $_;
}
