public inbox for [email protected]
help / color / mirror / Atom feedFrom: Peter Smith <[email protected]>
To: Álvaro Herrera <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Subject: Re: Redundant/mis-use of _(x) gettext macro?
Date: Thu, 23 Apr 2026 17:24:49 +1000
Message-ID: <CAHut+PuD2pGMEKmk2dFA+guzxBEOas5+=LAm5E+SM2LU35KOnQ@mail.gmail.com> (raw)
In-Reply-To: <CAHut+Pui7RaQ8OfJEVn2ry-ykjnGc+3ujsFmcHDFw9FsXw_tRw@mail.gmail.com>
References: <CAHut+Pvp7jYcaiZ3pXedXgLcWZWDBLXFUK05JtZpGv3Mj=UOjw@mail.gmail.com>
<[email protected]>
<CAHut+Pui7RaQ8OfJEVn2ry-ykjnGc+3ujsFmcHDFw9FsXw_tRw@mail.gmail.com>
On Tue, Apr 7, 2026 at 3:05 PM Peter Smith <[email protected]> wrote:
>
> On Wed, Apr 1, 2026 at 10:52 PM Álvaro Herrera <[email protected]> wrote:
> >
> > On 2026-Apr-01, Peter Smith wrote:
> >
> > > Hi.
> > >
> > > As originally reported [1] in the EXCEPT (TABLE ...) thread, I felt
> > > the _() gettext macro is mis-used when it contains nothing but a
> > > quoted format string.
> >
> > No, you feel wrong -- this is necessary so that the translator has
> > control over the quoting style of a list of items. Not all translations
> > use double quoting. Some examples from different language files:
> >
> > msgstr "unbekannte Komprimierungsoption: »%s«"
> > msgstr "opción de compresión no reconocida: «%s»"
> > msgstr "option de compression inconnue : « %s »"
> > msgstr "tidak dapat menentukan encoding untuk lokal « %s » : codesetnya adalah « %s »"
> >
>
> The explanation [1] that even the comma separators and the quotes are
> translatable parts of the message reminded me to revisit the
> `GetPublicationsStr` function.
>
> This function builds a comma-separated list of publication names.
>
> It is called in 2 scenarios:
> 1. to construct a pubname list to be included in some SQL (here,
> parameter quote_literal=true)
> 2. to construct a pubname list to be included in some error message
> (here, parameter quote_literal=false).
>
> In hindsight, it looks like this function has been broken since it was
> originally implemented 4 yrs ago (8f2e2bb), because it does not allow
> translation of commas and quotes when the result is being used for
> error messages.
>
> PSA a patch to fix that.
>
> ======
> [1] https://www.postgresql.org/message-id/202604011144.jeo56tazdx6z%40alvherre.pgsql
>
PSA patch v2.
v2 removes translation of the comma separator, due to the discussion
over at [1].
======
[1] https://www.postgresql.org/message-id/CAApHDvoFSu5zLFvx96aZ5wvL7tcB9aR2hBPCaMPs8D_f0Z7eSw%40mail.gma...
Kind Regards,
Peter Smith.
Fujitsu Australia
Attachments:
[application/octet-stream] v2-0001-GetPublicationsStr-i18n-support-for-quotes.patch (925B, 2-v2-0001-GetPublicationsStr-i18n-support-for-quotes.patch)
download | inline diff:
From f9a5034cd4d0f6eb930926de03e4e688c150eac3 Mon Sep 17 00:00:00 2001
From: Peter Smith <[email protected]>
Date: Thu, 23 Apr 2026 17:18:03 +1000
Subject: [PATCH v2] GetPublicationsStr i18n support for quotes
---
src/backend/catalog/pg_subscription.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/backend/catalog/pg_subscription.c b/src/backend/catalog/pg_subscription.c
index 5a733585490..a91d7a4a0ef 100644
--- a/src/backend/catalog/pg_subscription.c
+++ b/src/backend/catalog/pg_subscription.c
@@ -62,11 +62,7 @@ GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
if (quote_literal)
appendStringInfoString(dest, quote_literal_cstr(pubname));
else
- {
- appendStringInfoChar(dest, '"');
- appendStringInfoString(dest, pubname);
- appendStringInfoChar(dest, '"');
- }
+ appendStringInfo(dest, _("\"%s\""), pubname);
}
}
--
2.47.3
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Redundant/mis-use of _(x) gettext macro?
In-Reply-To: <CAHut+PuD2pGMEKmk2dFA+guzxBEOas5+=LAm5E+SM2LU35KOnQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox