Re: Log message for GSS connection is missing once connection authorization is successful. - Mailing list pgsql-hackers

From Euler Taveira
Subject Re: Log message for GSS connection is missing once connection authorization is successful.
Date
Msg-id CAH503wCgspPM2jFx9-ir4K9GQMHTYSbBdvKyScNGJkcRd=C0DQ@mail.gmail.com
Whole thread Raw
In response to Re: Log message for GSS connection is missing once connection authorization is successful.  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Responses Re: Log message for GSS connection is missing once connection authorization is successful.  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Re: Log message for GSS connection is missing once connection authorization is successful.  (vignesh C <vignesh21@gmail.com>)
List pgsql-hackers
On Sat, 31 Oct 2020 at 00:34, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote:
On Fri, Oct 30, 2020 at 6:35 PM Euler Taveira
<euler.taveira@2ndquadrant.com> wrote:
>
> + appendStringInfo(&logmsg, "replication ");
> +
> + appendStringInfo(&logmsg, "connection authorized: user=%s",
> + port->user_name);
> + if (!am_walsender)
> + appendStringInfo(&logmsg, " database=%s", port->database_name);
> +
> + if (port->application_name != NULL)
> + appendStringInfo(&logmsg, " application_name=%s",
> + port->application_name);
> +
>
> Your approach breaks localization. You should use multiple errmsg.
>

IIUC, isn't it enough calling a single errmsg() inside ereport() with
the prepared logmsg.data (which is a string)? The errmsg() function
will do the required translation of the logmsg.data. Why do we need
multiple errmsg() calls? Could you please elaborate a bit on how the
way currently it is done in the patch breaks localization?


No. The strings are specified in the appendStringInfo, hence you should add _()
around the string to be translated. There is nothing to be translated if you
specify only the format identifier. You can always test if gettext extracts the
string to be translated by executing 'make update-po' (after specifying
--enable-nls in the configure).  Search for your string in one of the generated
files (po/LL.po.new).

You shouldn't split messages like that because not all languages have the same
order as English. Having said that you risk providing a nonsense translation
because someone decided to translate pieces of a sentence separately.

+           appendStringInfo(&logmsg, "replication ");
+
+       appendStringInfo(&logmsg, "connection authorized: user=%s",
+                        port->user_name);

This hunk will break translation. In Portuguese, the adjective "replication" is
translated after the noun "connection". If you decided to keep this code as is,
the printed message won't follow the grammar rules. You will have "replicação
conexão autorizada" instead of "conexão de replicação autorizada". The former
isn't grammatically correct. Avoid splitting sentences that are translated. 


--
Euler Taveira                 http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: Consistent error reporting for encryption/decryption in pgcrypto
Next
From: Fabrízio de Royes Mello
Date:
Subject: Re: Add important info about ANALYZE after create Functional Index