On Monday 25 May 2009 19:11:24 Zdenek Kotala wrote: > I tried to run msgfmt -v ... on solaris and I got following error: > > Processing file "psql-cs.po"... > GNU PO file found. > Generating the MO file in the GNU MO format. > Processing file "psql-cs.po"... > Lines 1311, 1312 (psql-cs.po): incompatible printf-format. > 0 format specifier(s) in "msgid", but 1 format specifier(s) in > "msgstr". ... > ... > > Problem is in: > > #: print.c:2351 > #, c-format > msgid "(1 row)" > msgid_plural "(%lu rows)" > msgstr[0] "(%lu řádka)" > msgstr[1] "(%lu řádky)" > msgstr[2] "(%lu řádek)" > > > 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. """ One might consider this better style (English style, not C style) in some contexts. Of course the concrete example that you show doesn't actually take advantage of this, so if it is important to you, please send a patch to fix it. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers