public inbox for [email protected]  
help / color / mirror / Atom feed
Redundant/mis-use of _(x) gettext macro?
13+ messages / 5 participants
[nested] [flat]

* Redundant/mis-use of _(x) gettext macro?
@ 2026-04-01 03:48  Peter Smith <[email protected]>
  0 siblings, 2 replies; 13+ messages in thread

From: Peter Smith @ 2026-04-01 03:48 UTC (permalink / raw)
  To: PostgreSQL Hackers <[email protected]>

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.

AFAIK the purpose of using gettext (e.g. the "_(x)" macro) is for
marking the string for i18n translation. But there's nothing even to
translate here.

Only 2 examples were found like this. Granted, this is probably not
very harmful, but IMO it's better to patch the mis-use to prevent it
from propagating.

PSA the patch for more details.

======
[1] https://www.postgresql.org/message-id/CAHut%2BPtVaOYVP1R0TOoNh5G9CUBurrP%3D6i7fJCdfWEZiqVCRvw%40mail...

Kind Regards,
Peter Smith.
Fujitsu Australia


Attachments:

  [application/octet-stream] v1-0001-misuse-of-gettext-macro.patch (1.4K, 2-v1-0001-misuse-of-gettext-macro.patch)
  download | inline diff:
From bd2a5ba9e7d65b4fc6e964048437ad776246b067 Mon Sep 17 00:00:00 2001
From: Peter Smith <[email protected]>
Date: Wed, 1 Apr 2026 14:40:18 +1100
Subject: [PATCH v1] misuse of gettext macro

---
 src/backend/commands/tablecmds.c           | 2 +-
 src/backend/replication/logical/relation.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 4ee58feb10e..65229b7384e 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -20732,7 +20732,7 @@ ATExecAttachPartition(List **wqueue, Relation rel, PartitionCmd *cmd,
 
 			first = false;
 
-			appendStringInfo(&pubnames, _("\"%s\""), pubname);
+			appendStringInfo(&pubnames, "\"%s\"", pubname);
 		}
 
 		ereport(ERROR,
diff --git a/src/backend/replication/logical/relation.c b/src/backend/replication/logical/relation.c
index 0b1d80b5b0f..02e60ddf516 100644
--- a/src/backend/replication/logical/relation.c
+++ b/src/backend/replication/logical/relation.c
@@ -253,7 +253,7 @@ logicalrep_get_attrs_str(LogicalRepRelation *remoterel, Bitmapset *atts)
 			/* translator: This is a separator in a list of entity names. */
 			appendStringInfoString(&attsbuf, _(", "));
 
-		appendStringInfo(&attsbuf, _("\"%s\""), remoterel->attnames[i]);
+		appendStringInfo(&attsbuf, "\"%s\"", remoterel->attnames[i]);
 	}
 
 	return attsbuf.data;
-- 
2.47.3



^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-01 03:57  Chao Li <[email protected]>
  parent: Peter Smith <[email protected]>
  1 sibling, 0 replies; 13+ messages in thread

From: Chao Li @ 2026-04-01 03:57 UTC (permalink / raw)
  To: Peter Smith <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>



> On Apr 1, 2026, at 11:48, Peter Smith <[email protected]> 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.
> 
> AFAIK the purpose of using gettext (e.g. the "_(x)" macro) is for
> marking the string for i18n translation. But there's nothing even to
> translate here.

Indeed.

> 
> Only 2 examples were found like this. Granted, this is probably not
> very harmful, but IMO it's better to patch the mis-use to prevent it
> from propagating.

+1

> 
> PSA the patch for more details.
> 
> ======
> [1] https://www.postgresql.org/message-id/CAHut%2BPtVaOYVP1R0TOoNh5G9CUBurrP%3D6i7fJCdfWEZiqVCRvw%40mail...
> 
> Kind Regards,
> Peter Smith.
> Fujitsu Australia
> <v1-0001-misuse-of-gettext-macro.patch>

LGTM.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/









^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-01 11:52  Álvaro Herrera <[email protected]>
  parent: Peter Smith <[email protected]>
  1 sibling, 2 replies; 13+ messages in thread

From: Álvaro Herrera @ 2026-04-01 11:52 UTC (permalink / raw)
  To: Peter Smith <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"In fact, the basic problem with Perl 5's subroutines is that they're not
crufty enough, so the cruft leaks out into user-defined code instead, by
the Conservation of Cruft Principle."  (Larry Wall, Apocalypse 6)





^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-02 02:55  Peter Smith <[email protected]>
  parent: Álvaro Herrera <[email protected]>
  1 sibling, 1 reply; 13+ messages in thread

From: Peter Smith @ 2026-04-02 02:55 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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

OK. Thanks for your explanation.

======
Kind Regards,
Peter Smith.
Fujitsu Australia





^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-02 03:11  Chao Li <[email protected]>
  parent: Peter Smith <[email protected]>
  0 siblings, 1 reply; 13+ messages in thread

From: Chao Li @ 2026-04-02 03:11 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>; Peter Smith <[email protected]>



> On Apr 2, 2026, at 10:55, 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 »"
>> 
> 
> OK. Thanks for your explanation.
> 

Yep, good to learn. Noted.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/









^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-02 03:18  Tom Lane <[email protected]>
  parent: Chao Li <[email protected]>
  0 siblings, 0 replies; 13+ messages in thread

From: Tom Lane @ 2026-04-02 03:18 UTC (permalink / raw)
  To: Chao Li <[email protected]>; +Cc: Álvaro Herrera <[email protected]>; PostgreSQL Hackers <[email protected]>; Peter Smith <[email protected]>

Chao Li <[email protected]> writes:
> On Apr 2, 2026, at 10:55, Peter Smith <[email protected]> wrote:
>> On Wed, Apr 1, 2026 at 10:52 PM Álvaro Herrera <[email protected]> wrote:
>>> 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:

> Yep, good to learn. Noted.

This and related message style matters are covered in our docs, in

https://www.postgresql.org/docs/devel/error-style-guide.html

			regards, tom lane





^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-07 05:05  Peter Smith <[email protected]>
  parent: Álvaro Herrera <[email protected]>
  1 sibling, 1 reply; 13+ messages in thread

From: Peter Smith @ 2026-04-07 05:05 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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

Kind Regards,
Peter Smith.
Fujitsu Australia


Attachments:

  [application/octet-stream] v1-0001-GetPublicationsStr-i18n-support.patch (1.2K, 2-v1-0001-GetPublicationsStr-i18n-support.patch)
  download | inline diff:
From cd09ae7e4c18bfcb1b6522ec1aa16cfa3b5f502e Mon Sep 17 00:00:00 2001
From: Peter Smith <[email protected]>
Date: Tue, 7 Apr 2026 14:45:11 +1000
Subject: [PATCH v1] GetPublicationsStr i18n support

---
 src/backend/catalog/pg_subscription.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/backend/catalog/pg_subscription.c b/src/backend/catalog/pg_subscription.c
index 5a733585490..8b31c487dba 100644
--- a/src/backend/catalog/pg_subscription.c
+++ b/src/backend/catalog/pg_subscription.c
@@ -54,19 +54,22 @@ GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
 	{
 		char	   *pubname = strVal(lfirst(lc));
 
-		if (first)
-			first = false;
-		else
-			appendStringInfoString(dest, ", ");
-
 		if (quote_literal)
+		{
+			if (!first)
+				appendStringInfoString(dest, ", ");
+
 			appendStringInfoString(dest, quote_literal_cstr(pubname));
+		}
 		else
 		{
-			appendStringInfoChar(dest, '"');
-			appendStringInfoString(dest, pubname);
-			appendStringInfoChar(dest, '"');
+			if (!first)
+				appendStringInfoString(dest, _(", "));
+
+			appendStringInfo(dest, _("\"%s\""), pubname);
 		}
+
+		first = false;
 	}
 }
 
-- 
2.47.3



^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-23 07:24  Peter Smith <[email protected]>
  parent: Peter Smith <[email protected]>
  0 siblings, 1 reply; 13+ messages in thread

From: Peter Smith @ 2026-04-23 07:24 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

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



^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-23 09:25  Álvaro Herrera <[email protected]>
  parent: Peter Smith <[email protected]>
  0 siblings, 1 reply; 13+ messages in thread

From: Álvaro Herrera @ 2026-04-23 09:25 UTC (permalink / raw)
  To: Peter Smith <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On 2026-Apr-23, Peter Smith wrote:

> v2 removes translation of the comma separator, due to the discussion
> over at [1].

Hmm, at least Japanese uses a different character for commas, and
apparently French likes to add a space, so I think this is a bad move.
I think we could handle these things by including the comma together
with the literal in each element of the list being constructed, as in
the attached.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/


^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-24 03:10  Peter Smith <[email protected]>
  parent: Álvaro Herrera <[email protected]>
  0 siblings, 1 reply; 13+ messages in thread

From: Peter Smith @ 2026-04-24 03:10 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Thu, Apr 23, 2026 at 7:25 PM Álvaro Herrera <[email protected]> wrote:
>
> On 2026-Apr-23, Peter Smith wrote:
>
> > v2 removes translation of the comma separator, due to the discussion
> > over at [1].
>
> Hmm, at least Japanese uses a different character for commas, and
> apparently French likes to add a space, so I think this is a bad move.
> I think we could handle these things by including the comma together
> with the literal in each element of the list being constructed, as in
> the attached.
>

OK. Including the comma within a larger translated string seems like a
better idea.

Since you now have the list `length`, I wondered why not simplify
further to use list_nth indexing? Then you can remove
`foreach_current_index` and `lc`.

PSA.

~~~~

Also, why did you choose to implement `last` versus `first` logic?
e.g. How about this?

------
GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
{
    ListCell   *lc;
    bool        first = true;

    Assert(publications != NIL);

    foreach(lc, publications)
    {
        char       *pubname = strVal(lfirst(lc));

        if (quote_literal)
        {
            if (!first)
                appendStringInfoString(dest, ", ");
            appendStringInfoString(dest, quote_literal_cstr(pubname));
        }
        else
        {
            if (first)
                appendStringInfo(dest, _("\"%s\""), pubname);
            else
                appendStringInfo(dest, _(", \"%s\""), pubname);
        }

        first = false;
    }
}
------

======
Kind Regards,
Peter Smith.
Fujitsu Australia


Attachments:

  [application/octet-stream] 0001-change-translation-markers-in-GetPublicationStr-PS.diff (1.5K, 2-0001-change-translation-markers-in-GetPublicationStr-PS.diff)
  download | inline diff:
diff --git a/src/backend/catalog/pg_subscription.c b/src/backend/catalog/pg_subscription.c
index 5a733585490..7749ec380de 100644
--- a/src/backend/catalog/pg_subscription.c
+++ b/src/backend/catalog/pg_subscription.c
@@ -41,31 +41,35 @@ static List *textarray_to_stringlist(ArrayType *textarray);
 
 /*
  * Add a comma-separated list of publication names to the 'dest' string.
+ *
+ * If quote_literal is true, the returned list can be used to construct an SQL
+ * command, thus no translation is applied.  Otherwise, the string can be used
+ * to create a user-facing message, so translatable quote marks are added.
  */
 void
 GetPublicationsStr(List *publications, StringInfo dest, bool quote_literal)
 {
-	ListCell   *lc;
-	bool		first = true;
+	int			length = list_length(publications);
 
 	Assert(publications != NIL);
 
-	foreach(lc, publications)
+	for (int i = 0; i < length; i++)
 	{
-		char	   *pubname = strVal(lfirst(lc));
-
-		if (first)
-			first = false;
-		else
-			appendStringInfoString(dest, ", ");
+		char	   *pubname = strVal(list_nth(publications, i));
+		bool		last = i >= length - 1;
 
 		if (quote_literal)
+		{
 			appendStringInfoString(dest, quote_literal_cstr(pubname));
+			if (!last)
+				appendStringInfoString(dest, ", ");
+		}
 		else
 		{
-			appendStringInfoChar(dest, '"');
-			appendStringInfoString(dest, pubname);
-			appendStringInfoChar(dest, '"');
+			if (last)
+				appendStringInfo(dest, _("\"%s\""), pubname);
+			else
+				appendStringInfo(dest, _("\"%s\", "), pubname);
 		}
 	}
 }


^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-24 12:14  Álvaro Herrera <[email protected]>
  parent: Peter Smith <[email protected]>
  0 siblings, 2 replies; 13+ messages in thread

From: Álvaro Herrera @ 2026-04-24 12:14 UTC (permalink / raw)
  To: Peter Smith <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On 2026-Apr-24, Peter Smith wrote:

> OK. Including the comma within a larger translated string seems like a
> better idea.
> 
> Since you now have the list `length`, I wondered why not simplify
> further to use list_nth indexing? Then you can remove
> `foreach_current_index` and `lc`.

WFM.

> Also, why did you choose to implement `last` versus `first` logic?
> e.g. How about this?

>         {
>             if (first)
>                 appendStringInfo(dest, _("\"%s\""), pubname);
>             else
>                 appendStringInfo(dest, _(", \"%s\""), pubname);
>         }

I don't know, it just seemed more natural.  The whole ", foo" style
simply feels weird to me.  It seems a matter of choice only though, so
if you feel strongly about this, I'm not opposed.

-- 
Álvaro Herrera               48°01'N 7°57'E  —  https://www.EnterpriseDB.com/
"Hay dos momentos en la vida de un hombre en los que no debería
especular: cuando puede permitírselo y cuando no puede" (Mark Twain)





^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-04-24 12:43  David Rowley <[email protected]>
  parent: Álvaro Herrera <[email protected]>
  1 sibling, 0 replies; 13+ messages in thread

From: David Rowley @ 2026-04-24 12:43 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: Peter Smith <[email protected]>; PostgreSQL Hackers <[email protected]>

On Sat, 25 Apr 2026 at 00:14, Álvaro Herrera <[email protected]> wrote:
>
> On 2026-Apr-24, Peter Smith wrote:
>
> > OK. Including the comma within a larger translated string seems like a
> > better idea.
> >
> > Since you now have the list `length`, I wondered why not simplify
> > further to use list_nth indexing? Then you can remove
> > `foreach_current_index` and `lc`.
>
> WFM.

Wouldn't it be simpler to put the comma on the other end of the name
and use that if (foreach_current_index(lc) > 0) ?

Or was this to reuse a translation and you didn't want to swap
"\"%s\", " for , "\"%s\" ?

David





^ permalink  raw  reply  [nested|flat] 13+ messages in thread

* Re: Redundant/mis-use of _(x) gettext macro?
@ 2026-05-18 05:26  Peter Smith <[email protected]>
  parent: Álvaro Herrera <[email protected]>
  1 sibling, 0 replies; 13+ messages in thread

From: Peter Smith @ 2026-05-18 05:26 UTC (permalink / raw)
  To: Álvaro Herrera <[email protected]>; +Cc: PostgreSQL Hackers <[email protected]>

On Tue, Apr 28, 2026 at 11:57 AM Peter Smith <[email protected]> wrote:
>
> On Fri, Apr 24, 2026 at 10:14 PM Álvaro Herrera <[email protected]> wrote:
> >
> > On 2026-Apr-24, Peter Smith wrote:
> >
> > > OK. Including the comma within a larger translated string seems like a
> > > better idea.
> > >
> > > Since you now have the list `length`, I wondered why not simplify
> > > further to use list_nth indexing? Then you can remove
> > > `foreach_current_index` and `lc`.
> >
> > WFM.
> >
> > > Also, why did you choose to implement `last` versus `first` logic?
> > > e.g. How about this?
> >
> > >         {
> > >             if (first)
> > >                 appendStringInfo(dest, _("\"%s\""), pubname);
> > >             else
> > >                 appendStringInfo(dest, _(", \"%s\""), pubname);
> > >         }
> >
> > I don't know, it just seemed more natural.  The whole ", foo" style
> > simply feels weird to me.  It seems a matter of choice only though, so
> > if you feel strongly about this, I'm not opposed.
> >
>
> Personally, I prefer `first` logic because
> a) The length of the list is not required up-front
> b) At each iteration, the built string makes sense instead of always
> having a dangling ',' until the final iteration
>
> But it is not a big deal. This thread is about the translation part,
> so whatever way makes the most sense for translators is fine with me.
>

This thread has been inactive for about 5 weeks. AFAIK, everybody was
happy with the patch, and we were only debating if the translated
format string should have a leading comma or a trailing comma. Either
way is OK with me -- whatever way you think makes the most sense to a
translator.

What can I do to help the patch proceed to get pushed?

======
Kind Regards,
Peter Smith.
Fujitsu Australia






^ permalink  raw  reply  [nested|flat] 13+ messages in thread


end of thread, other threads:[~2026-05-18 05:26 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2026-04-01 03:48 Redundant/mis-use of _(x) gettext macro? Peter Smith <[email protected]>
2026-04-01 03:57 ` Chao Li <[email protected]>
2026-04-01 11:52 ` Álvaro Herrera <[email protected]>
2026-04-02 02:55   ` Peter Smith <[email protected]>
2026-04-02 03:11     ` Chao Li <[email protected]>
2026-04-02 03:18       ` Tom Lane <[email protected]>
2026-04-07 05:05   ` Peter Smith <[email protected]>
2026-04-23 07:24     ` Peter Smith <[email protected]>
2026-04-23 09:25       ` Álvaro Herrera <[email protected]>
2026-04-24 03:10         ` Peter Smith <[email protected]>
2026-04-24 12:14           ` Álvaro Herrera <[email protected]>
2026-04-24 12:43             ` David Rowley <[email protected]>
2026-05-18 05:26             ` Peter Smith <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox