On 02/08/2013 03:07 PM, Eric Blake wrote:
> On 02/08/2013 04:07 AM, Bernhard Voelker wrote:
>>
>>
>> On February 7, 2013 at 8:20 PM Benno Schulenberg <[email protected]>
>> wrote:
>>> On Thu, Feb 7, 2013, at 0:12, Bernhard Voelker wrote:
>>>> "), _("\
>>>> -X, --xyz some text\n\
>>>> "), _("\
>>>> -Y another option with a longer\n\
>>>> description message\n\
>>>> "), _("\
>>>
>>> Hmmm... To me these intervening lines with '"), _("\' look
>>> distracting.
>
> It's worth seeing how coreutils does this, for comparison:
> http://git.sv.gnu.org/cgit/coreutils.git/tree/src/ls.c#n4714
Guess who made the last change there ... ;-)
Kidding aside, another difference is that secondary lines of
a description are indented by 2 character. I added this to my
new patch.
>> Admitted, but the point was a nice alignment of the description
>> column for options with a wrapped line. That would be harder
>> with such an approach:
>>
>>> HTL (" -X, --xyz some text\n\");
>>> HTL (" -Y another option with a longer\n\
>>> description message\n\");
>
> No, just use C string concatenation to get alignment:
>
> HTL (" -X, --xyz some text\n");
> HTL (" -Y another option with a longer\n"
> " description message\n");
Yes thanks, I've done it in that way - well not exactly, as we
still need the _( ) around the texts to make them find their
way into the *.po files.
The only drawback is that the line length in the code is now
>80 although this doesn't seem to be a hard style limit in
findutils.
Attached is v2.
Have a nice day,
Berny
>From a2a0ba8c8397a2b54f4ebdfc2fbbe6f066add96a Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <[email protected]>
Date: Fri, 8 Feb 2013 22:08:22 +0100
Subject: [PATCH] xargs: split usage text to help translators
Smaller chunks are easier to handle for translators, ideally
one msgid per option. Separate them.
Clarify -l option: separate from -L to emphasize that MAX-LINES
is optional for the -l option.
* xargs/xargs.c (usage): Define HTL macro to print one help text
line (or entry). Split the option descriptions up by using the
above macro. Refine the messages to adapt to the common way:
change the start of each option's description to lower case,
do not use periods at the end, use semicolons where needed,
indent secondary lines.
Reported by Benno Schulenberg in
http://lists.gnu.org/archive/html/bug-findutils/2013-02/msg00017.html
---
xargs/xargs.c | 85 +++++++++++++++++++++++++++++----------------------------
1 files changed, 43 insertions(+), 42 deletions(-)
diff --git a/xargs/xargs.c b/xargs/xargs.c
index 5fd93cd..2b2ec54 100644
--- a/xargs/xargs.c
+++ b/xargs/xargs.c
@@ -1584,46 +1584,47 @@ parse_num (char *str, int option, long int min, long int max, int fatal)
static void
usage (FILE *stream)
{
- fprintf (stream, _("\
-Usage: %s [OPTION]... COMMAND INITIAL-ARGS...\n\
-Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.\n"),
- program_name);
- fprintf (stream, _("\n\
-Mandatory arguments to long options are mandatory for short options too.\n\
-Non-mandatory arguments are indicated by [square brackets]\n\
- -0, --null Items are separated by a null, not whitespace.\n\
- Disables quote and backslash processing\n\
- -a, --arg-file=FILE Read arguments from FILE, not standard input\n\
- -d, --delimiter=CHARACTER Input items are separated by CHARACTER, not by\n\
- blank space. Disables quote and backslash\n\
- processing\n\
- -E END If END occurs as a line of input, the rest of\n\
- the input is ignored.\n\
- -e [END], --eof[=END] Equivalent to -E END if END is specified.\n\
- Otherwise, there is no end-of-file string\n\
- --help Print a summary of the options to xargs.\n\
- -I R same as --replace=R (R must be specified)\n\
- -i,--replace=[R] Replace R in initial arguments with names\n\
- read from standard input. If R is\n\
- unspecified, assume {}\n\
- -L,-l, --max-lines=MAX-LINES Use at most MAX-LINES nonblank input lines per\n\
- command line\n\
- -l Use at most one nonblank input line per\n\
- command line\n\
- -n, --max-args=MAX-ARGS Use at most MAX-ARGS arguments per command\n\
- line\n\
- -P, --max-procs=MAX-PROCS Run up to max-procs processes at a time\n\
- -p, --interactive Prompt before running commands\n\
- --process-slot-var=VAR Set environment variable VAR in child\n\
- processes\n\
- -r, --no-run-if-empty If there are no arguments, run no command.\n\
- If this option is not given, COMMAND will be\n\
- run at least once.\n\
- -s, --max-chars=MAX-CHARS Limit commands to MAX-CHARS at most\n\
- --show-limits Show limits on command-line length.\n\
- -t, --verbose Print commands before executing them\n\
- --version Print the version number\n\
- -x, --exit Exit if the size (see -s) is exceeded\n\
-"));
- fputs (_("\nReport bugs to <[email protected]>.\n"), stream);
+ fprintf (stream,
+ _("Usage: %s [OPTION]... COMMAND INITIAL-ARGS...\n"),
+ program_name);
+
+#define HTL(t) fputs (t, stream);
+
+ HTL (_("Run COMMAND with arguments INITIAL-ARGS and more arguments read from input.\n"
+ "\n"
+ "Mandatory arguments to long options are mandatory for short options too.\n"
+ "Non-mandatory arguments are indicated by [square brackets].\n"));
+ HTL (_(" -0, --null items are separated by a null, not whitespace;\n"
+ " disables quote and backslash processing\n"));
+ HTL (_(" -a, --arg-file=FILE read arguments from FILE, not standard input\n"));
+ HTL (_(" -d, --delimiter=CHARACTER input items are separated by CHARACTER, not by\n"
+ " blank space; disables quote and backslash\n"
+ " processing\n"));
+ HTL (_(" -E END if END occurs as a line of input, the rest of\n"
+ " the input is ignored\n"));
+ HTL (_(" -e [END], --eof[=END] equivalent to -E END if END is specified;\n"
+ " otherwise, there is no end-of-file string\n"));
+ HTL (_(" --help print a summary of the options to xargs\n"));
+ HTL (_(" -I R same as --replace=R (R must be specified)\n"));
+ HTL (_(" -i, --replace=[R] replace R in initial arguments with names read\n"
+ " from standard input; if R is unspecified,\n"
+ " assume {}\n"));
+ HTL (_(" -L, --max-lines=MAX-LINES use at most MAX-LINES nonblank input lines per\n"
+ " command line\n"));
+ HTL (_(" -l [MAX-LINES] similar to -L but defaults to at most one\n"
+ " nonblank input line if MAX-LINES not specified\n"));
+ HTL (_(" -n, --max-args=MAX-ARGS use at most MAX-ARGS arguments per command line\n"));
+ HTL (_(" -P, --max-procs=MAX-PROCS run up to max-procs processes at a time\n"));
+ HTL (_(" -p, --interactive prompt before running commands\n"));
+ HTL (_(" --process-slot-var=VAR set environment variable VAR in child processes\n"));
+ HTL (_(" -r, --no-run-if-empty if there are no arguments, run no command;\n"
+ " if this option is not given, COMMAND will be\n"
+ " run at least once\n"));
+ HTL (_(" -s, --max-chars=MAX-CHARS limit commands to MAX-CHARS at most\n"));
+ HTL (_(" --show-limits show limits on command-line length\n"));
+ HTL (_(" -t, --verbose print commands before executing them\n"));
+ HTL (_(" --version print the version number\n"));
+ HTL (_(" -x, --exit exit if the size (see -s) is exceeded\n"));
+ HTL (_("\n"
+ "Report bugs to <[email protected]>.\n"));
}
--
1.7.7