bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Command line parsing of ls, tail and wc with genparse


From: Michael Geng
Subject: Re: [PATCH] Command line parsing of ls, tail and wc with genparse
Date: Sun, 7 Oct 2007 09:39:20 +0200
User-agent: Mutt/1.5.9i

On Sat, Oct 06, 2007 at 05:09:15PM +0200, Bruno Haible wrote:
> Michael Geng wrote:
> > My intention is in fact to invoke xgettext on the parser files which 
> > genparse generates. ... You can watch the genparse
> > generated parser for it from 
> > http://genparse.sourceforge.net/examples/wc_clp.c.
> 
> OK, this kind of generated code is not bad; it's acceptable to have
> translators look at it.
> 
> But there are still two problems:
> 
> 1) The gettext documentation [1] recommends to not make the _() arguments
> unnecessarily large.
> 
>       printf (_("\
>       --files0-from=F    read input from the files specified by\n\
>                            NUL-terminated names in file F\n\
>   -L, --max-line-length  print the length of the longest line\n\
>   -w, --words            print the word counts\n"));
> 
> This is too large. When the maintainer adds another option, the translator
> should not have to re-proofread the 3 existing options. So you should better
> generate code like this:

The text is partitioned exactly as it is in the existing code of tail.c (I'm 
looking at a cvs archive copy from sept 9). This is from tail.c:

      fputs (_("\
      --files0-from=F    read input from the files specified by\n\
                           NUL-terminated names in file F\n\
  -L, --max-line-length  print the length of the longest line\n\
  -w, --words            print the word counts\n\
"), stdout);

---------------------------------------------

>       printf (_("\
>       --files0-from=F    read input from the files specified by\n\
>                            NUL-terminated names in file F\n"));
>       printf (_("\
>   -L, --max-line-length  print the length of the longest line\n"));
>       printf (_("\
>   -w, --words            print the word counts\n"));

Genparse could easily generate the above code if you added more __NEW_PRINT__
directives to the genparse file like this:

NONE / files0-from=F    string  "read input from the files specified by"
                                "  NUL-terminated names in file F__NEW_PRINT__"
L / max-line-length     flag    "print the length of the longest 
line__NEW_PRINT__"
w / words               flag    "print the word counts__NEW_PRINT__"

> 2) What about translator comments? How can a maintainer provide
> additional information for the translators? Does this work?
> 
>   /* TRANSLATORS: the length here is actually the screen width */
>   L / max-line-length  flag    "print the length of the longest line"
> 
> 
> /* TRANSLATORS: Keep the colons aligned. */
> Usage: __PROGRAM_NAME__ [OPTION]... [FILE]...
>   or:  __PROGRAM_NAME__ [OPTION]... --files0-from=F__NEW_PRINT__
> 
> 
> Bruno
> 
> 
> [1] 
> http://www.gnu.org/software/gettext/manual/html_node/Preparing-Strings.html

That could be a reason for a new directive in the genparse file. When I grep for
"TRANSLATORS" in the coreutils src/ directory I can find only 3 hits however and
none of them is directly in the command line parsing code. system.h contains a
TRANSLATORS comment in the emit_bug_reporting_address () function but that can
stay as it is because genparse only instanstiates the call to 
emit_bug_reporting_address () (see e.g. 
http://genparse.sourceforge.net/examples/wc_clp.c).
Do you see more examples of translator comments in the coreutils code for which 
you think genparse should handle them?

Michael




reply via email to

[Prev in Thread] Current Thread [Next in Thread]