On Sat, 31 Oct 2020 at 00:34, Bharath Rupireddy <
bharath.rupireddyforpostg...@gmail.com> wrote:

> On Fri, Oct 30, 2020 at 6:35 PM Euler Taveira
> <euler.tave...@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

Reply via email to