Hi Alvaro, Alexander,

On Fri, Jan 2, 2026 at 7:42 AM Alexander Korotkov <[email protected]> wrote:
>
> On Thu, Jan 1, 2026 at 7:16 PM Álvaro Herrera <[email protected]> wrote:
> > In 0002 you have this kind of thing:
> >
> > >                               ereport(ERROR,
> > >                                               
> > > errcode(ERRCODE_QUERY_CANCELED),
> > > -                                             errmsg("timed out while 
> > > waiting for target LSN %X/%08X to be replayed; current replay LSN 
> > > %X/%08X",
> > > +                                             errmsg("timed out while 
> > > waiting for target LSN %X/%08X to be %s; current %s LSN %X/%08X",
> > >                                                          
> > > LSN_FORMAT_ARGS(lsn),
> > > -                                                        
> > > LSN_FORMAT_ARGS(GetXLogReplayRecPtr(NULL))));
> > > +                                                        desc->verb,
> > > +                                                        desc->noun,
> > > +                                                        
> > > LSN_FORMAT_ARGS(currentLSN)));
> > > +                     }
> >
> >
> > I'm afraid this technique doesn't work, for translatability reasons.
> > Your whole design of having a struct with ->verb and ->noun is not
> > workable (which is a pity, but you can't really fight this.) You need to
> > spell out the whole messages for each case, something like
> >
> > if (lsntype == replay)
> >    ereport(ERROR,
> >            errcode(ERRCODE_QUERY_CANCELED),
> >            errmsg("timed out while waiting for target LSN %X/%08X to be 
> > replayed; current standby_replay LSN %X/%08X",
> > else if (lsntype == flush)
> >     ereport( ... )
> >
> > and so on.  This means four separate messages for translation for each
> > message your patch is adding, which is IMO the correct approach.
>
> +1
> Thank you for catching this, Alvaro.  Yes, I think we need to get rid
> of WaitLSNTypeDesc.  It's nice idea, but we support too many languages
> to have something like this.
>

Thanks for pointing this out. This approach doesn’t scale to multiple
languages. While switch statements are more verbose, the extra clarity
is justified to preserve proper internationalization. Please check the
updated v12.

-- 
Best,
Xuneng

Attachment: v12-0003-Add-tab-completion-for-WAIT-FOR-LSN-MODE-option.patch
Description: Binary data

Attachment: v12-0001-Extend-xlogwait-infrastructure-with-write-and-fl.patch
Description: Binary data

Attachment: v12-0004-Use-WAIT-FOR-LSN-in-PostgreSQL-Test-Cluster-wait.patch
Description: Binary data

Attachment: v12-0002-Add-MODE-option-to-WAIT-FOR-LSN-command.patch
Description: Binary data

Reply via email to