Re: problem with plural-forms

Lists: pgsql-hackers
From: Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: problem with plural-forms
Date: 2009-05-25 16:11:24
Message-ID: 1243267884.1360.121.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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).

Zdenek


From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 10:39:08
Message-ID: 200905261339.08519.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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.


From: Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: problem with plural-forms
Date: 2009-05-26 13:01:47
Message-ID: 1243342907.1296.9.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


Peter Eisentraut píše v út 26. 05. 2009 v 13:39 +0300:
> On Monday 25 May 2009 19:11:24 Zdenek Kotala wrote:
<snip>
> >
> > 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.
> """

Yeah, I check also printf specification and it is allowed.

> 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.

It is not a big issue, because it works without -v but I prefer to fix
it. I will send a patch. I also sended question to i18n solaris group if
it is supported on solaris.

thanks Zdenek


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 13:47:44
Message-ID: 10794.1243345664@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Peter Eisentraut <peter_e(at)gmx(dot)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


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:05:35
Message-ID: 20090526140535.GB32650@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Tom Lane wrote:

> 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 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);

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: Greg Stark <greg(dot)stark(at)enterprisedb(dot)com>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:14:54
Message-ID: 0054431E-02E5-48B0-B698-5452297B1B40@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Isn't case I think in these two cases that using "one" is actively a
bad idea. These aren't English sentences they're fragments meant to
report numerical results to programmers. We don't use "two" or "three"
either.

If the value were just part of some full sentence where the actual
value wasn't the key piece of data such as some error messages the
situation might be different.

--
Greg

On 26 May 2009, at 15:05, Alvaro Herrera <alvherre(at)commandprompt(dot)com>
wrote:

> Tom Lane wrote:
>
>> 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 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);
>
> --
> Alvaro Herrera http://www.CommandPrompt.com/
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:19:50
Message-ID: 11518.1243347590@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Alvaro Herrera <alvherre(at)commandprompt(dot)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


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:26:50
Message-ID: 20090526142650.GC32650@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Tom Lane wrote:
> Alvaro Herrera <alvherre(at)commandprompt(dot)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.

Hmm, I admit I have no idea how it works ... but now that I think about
it, you are right that at least I only use it with the whole argument
array, just in a different order.

> 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.

Agreed on both counts. We have enough trouble finding translators as it
is; I don't want to know what would happen if we were to confuse them
with this :-)

I find it strange that this topic has not been fully hashed out in the
GNU gettext documentation. Maybe we should talk to them.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:29:10
Message-ID: 11740.1243348150@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

I wrote:
> ... 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.

Uh, scratch that [ not enough caffeine yet ]. What this coding embeds
is the assumption that the filecount is the only variable we might wish
to replace with a constant string, which is safe enough since that's the
only one that we know a fixed value for in any one ngettext string.

Still, I agree with Greg's opinion that this is just not a real good
thing to be doing.

regards, tom lane


From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:32:56
Message-ID: 200905261732.56706.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tuesday 26 May 2009 17:19:50 Tom Lane wrote:
> Alvaro Herrera <alvherre(at)commandprompt(dot)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.

gcc -Wall actually warns if you do this.


From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:34:32
Message-ID: 200905261734.32878.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tuesday 26 May 2009 16:47:44 Tom Lane wrote:
> 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);

Don't do that then. This only shows that you cannot implement everything this
way. It does not show why the things that you can implement are wrong.

> 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".

I have no objections to this. I am only pointing out how we arrived at the
current state.


From: Aidan Van Dyk <aidan(at)highrise(dot)ca>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:36:03
Message-ID: 20090526143603.GB15213@yugib.highrise.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

* Alvaro Herrera <alvherre(at)commandprompt(dot)com> [090526 10:06]:
> Tom Lane wrote:
>
> > 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 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);

From the glibc printf man page:
"There may be no gaps in the numbers of arguments specified using
'$'; for example, if arguments 1 and 3 are specified, argument 2 must
also be specified somewhere in the format string."

So, is skipping 1 allowed?

But, it *is* a commonly used form, especially in translations (where
orders of things need to be flipped), and is already used in many of the
translated PG .po files.

That said, I do think the "msgid" should be using the % args, not words
for a few reasons:
1) Make it more clear for translators the arguments and their ordering
without having to visit the source code
2) On crufty systems without gettext, I wouldn't expect them to support m$
modifiers then either...
3) Greg's "these are numbers, not sentences" is how I expect the system
to work...

a.

--
Aidan Van Dyk Create like a god,
aidan(at)highrise(dot)ca command like a king,
http://www.highrise.ca/ work like a slave.


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Aidan Van Dyk <aidan(at)highrise(dot)ca>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-hackers(at)postgresql(dot)org, Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-26 14:55:18
Message-ID: 12167.1243349718@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Aidan Van Dyk <aidan(at)highrise(dot)ca> writes:
> From the glibc printf man page:
> "There may be no gaps in the numbers of arguments specified using
> '$'; for example, if arguments 1 and 3 are specified, argument 2 must
> also be specified somewhere in the format string."

> So, is skipping 1 allowed?

No --- the point is that printf has to be able to figure out where each
argument is on the stack, so it must be able to infer the size of each
of the arguments from left to right.

> That said, I do think the "msgid" should be using the % args, not words
> for a few reasons:
> 1) Make it more clear for translators the arguments and their ordering
> without having to visit the source code
> 2) On crufty systems without gettext, I wouldn't expect them to support m$
> modifiers then either...
> 3) Greg's "these are numbers, not sentences" is how I expect the system
> to work...

Actually, configure checks to see if the local printf supports m$ or
not, and we use our own printf implementation if not. So I'm not
worried about #2. I agree with your other points though.

(So, if you wanna see how this is done, try src/port/snprintf.c)

regards, tom lane


From: Aidan Van Dyk <aidan(at)highrise(dot)ca>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: problem with plural-forms
Date: 2009-05-26 15:02:42
Message-ID: 20090526150242.GD15213@yugib.highrise.ca
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

* Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> [090526 10:56]:

> Actually, configure checks to see if the local printf supports m$ or
> not, and we use our own printf implementation if not. So I'm not
> worried about #2. I agree with your other points though.
>
> (So, if you wanna see how this is done, try src/port/snprintf.c)
>
> regards, tom lane

So what part of a working libc does PG use that it *doesn't* have to
carry around in src/port/?

;-)

a.

--
Aidan Van Dyk Create like a god,
aidan(at)highrise(dot)ca command like a king,
http://www.highrise.ca/ work like a slave.


From: Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: problem with plural-forms
Date: 2009-05-27 20:02:19
Message-ID: 1243454539.1439.7.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


Peter Eisentraut píše v út 26. 05. 2009 v 13:39 +0300:

> 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.

Fix attached. I found only two problems, both in psql. I did not fix .po
files. Is necessary to fix them manually or do you regenerate files?

thanks Zdenek

Attachment Content-Type Size
i18n.patch text/x-patch 1009 bytes

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-27 20:08:20
Message-ID: 200905272308.21045.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

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).

I don't think we can find all these occurrences without the Solaris version of
msgfmt. So please send a complete error log over all files, or better yet a
patch.


From: Zdenek Kotala <Zdenek(dot)Kotala(at)Sun(dot)COM>
To: Peter Eisentraut <peter_e(at)gmx(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: problem with plural-forms
Date: 2009-05-27 21:06:49
Message-ID: 1243458409.1383.0.camel@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Here is output of:

for FILE in `find . -name *.po`;do LC_ALL=C msgfmt -v -o /dev/null $FILE
2>> msgfmt.txt; done

Zdenek

Peter Eisentraut píše v st 27. 05. 2009 v 23:08 +0300:
> 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).
>
> I don't think we can find all these occurrences without the Solaris version of
> msgfmt. So please send a complete error log over all files, or better yet a
> patch.

Attachment Content-Type Size
msgfmt.txt text/plain 53.6 KB

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Zdenek Kotala <Zdenek(dot)Kotala(at)sun(dot)com>
Subject: Re: problem with plural-forms
Date: 2009-05-28 06:06:02
Message-ID: 200905280906.02866.peter_e@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Wednesday 27 May 2009 23:02:19 Zdenek Kotala wrote:
> Peter Eisentraut píše v út 26. 05. 2009 v 13:39 +0300:
> > 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.
>
> Fix attached. I found only two problems, both in psql. I did not fix .po
> files. Is necessary to fix them manually or do you regenerate files?

fixed