On Thu, Nov 16, 2023 at 12:36 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > On Wed, Nov 15, 2023 at 3:58 PM Alvaro Herrera <alvhe...@alvh.no-ip.org> > wrote: > > > > Translation-wise, this doesn't work, because you're building a string. > > There's no reason to think that the words "logical" and "physical" > > should stay untranslated; the message would make no sense, or at least > > would be very ugly. > > > > You should do something like > > > > if (am_walsender) > > { > > ereport(log_replication_commands ? LOG : DEBUG1, > > SlotIsLogical(s) ? errmsg("acquired logical replication > > slot \"%s\"", NameStr(s->data.name)) : > > errmsg("acquired physical replication slot \"%s\"", > > NameStr(s->data.name))); > > } > > > > (Obviously, lose the "translator:" comments since they are unnecessary) > > > > > > If you really want to keep the "logical"/"physical" word untranslated, > > you need to split it out of the sentence somehow. But it would be > > really horrible IMO. Like > > > > errmsg("acquired replication slot \"%s\" of type \"%s\"", > > NameStr(s->data.name), SlotIsLogical(s) ? "logical" : "physical") > > > > Thanks for the suggestion. I would like to clarify on this a bit. What > do exactly mean by splitting out of the sentence? For example, in one > of the existing messages: > > ereport(LOG, > /* translator: %s is SIGKILL or SIGABRT */ > (errmsg("issuing %s to recalcitrant children", > send_abort_for_kill ? "SIGABRT" : "SIGKILL"))); > > Do here words SIGABRT/SIGKILL remain untranslated due to the > translator's comment? I thought this was similar to the message being > proposed but seems like this message construction follows translation > rules better. >
IIUC, that example is different because "SIGABRT" / "SIGKILL" are not real words, so you don't want the translator to attempt to translate them.You want them to appear in the message as-is. OTOH in this patch "logical" and "physical" are just normal English words that should be translated as part of the original message. e.g. like in these similar messages: - msgid "database \"%s\" is used by an active logical replication slot" - msgstr "la base de données « %s » est utilisée par un slot de réplication logique actif" ====== Kind Regards, Peter Smith. Fujitsu Australia