Peter Eisentraut <pete...@gmx.net> writes:
> On Monday 25 May 2009 19:11:24 Zdenek Kotala wrote:
>> The problem here is (1 row) instead of (%lu row). When I run msgfmt
>> without -v everything works fine but I think we should fixed it (there
>> are more occurrences of this issue).

> GNU gettext accepts this, and in fact the GNU gettext documentation 
> explicitly 
> points out that this allowed:

>      In the English singular case, the number - always 1 - can be
>      replaced with "one":

>           printf (ngettext ("One file removed", "%d files removed", n), n);

>      This works because the `printf' function discards excess arguments
>      that are not consumed by the format string.

That advice is, if not outright wrong, at least incredibly
short-sighted.  The method breaks the instant you have any additional
values to print.  For example, this ain't gonna work:

       printf (ngettext ("One file removed, containing %lu bytes",
                         "%d files removed, containing %lu bytes", n),
               n, total_bytes);

I'm of the opinion that the test being performed by msgfmt -v is
entirely reasonable, and we should not risk such problems for the sake
of sometimes spelling out "one".

                        regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to