Whamcloud - gitweb
po: update zh_CN.po (from translationproject.org)
[tools/e2fsprogs.git] / po / at-expand.pl
index 59a20fd..fe68556 100644 (file)
@@ -1,10 +1,82 @@
 #!/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",
+ "#. Please note that the %-expansion for most e2fsck's problem.c should not\n",
+ "#. use positional indicators such as %1$c, since although they look like c-style\n",
+ "#. format strings, they are NOT c-style format strings, and the positional\n",
+ "#. indicators (which BTW are GNU extensions and so won't work on other Unix\n",
+ "#. gettext implementations) won't work with e2fsck's print_e2fsck_message()\n",
+ "#. function found in e2fsck/message.c\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;
@@ -26,19 +98,27 @@ sub do_expand {
     $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;
@@ -52,7 +132,7 @@ while (<>) {
        }
        &do_expand();
        if ($msg ne "") {
-           $msg_accum = $msg_accum . "#. \@-expand: $msg\n";
+           $msg_accum = $msg_accum . "#. \@-expanded: $msg\n";
        }
        next;
     }
@@ -63,7 +143,7 @@ while (<>) {
            $expanded++;
        }
        &do_expand();
-       $msg_accum = $msg_accum . "#. \@-expand: $msg\n";
+       $msg_accum = $msg_accum . "#. \@-expanded: $msg\n";
        next;
     }
     if (/^msgstr / && $is_problem_file) {