Alvaro Herrera <alvhe...@commandprompt.com> writes:
> I think it should use the %2$s style specifier in that case.  This
> should work:

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

How's that gonna work?  In the n=1 case, printf would have no idea about
the type/size of the argument it would need to skip over.

I think maybe you could make it work like this:

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

but *for sure* I don't want us playing such games without a robust
compile-time check on both variants of the ngettext string.  I'm
not real sure it's a good idea at all, because of the potential for
confusing translators.  Notice also that we have subtly embedded the
preferred English phrase ordering here: if someone wants to pull the
same type of trick in a language where the bytecount ought to come
first, he's just plain out of luck.

                        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