public inbox for [email protected]  
help / color / mirror / Atom feed
From: Nathan Bossart <[email protected]>
To: Peter Eisentraut <[email protected]>
Cc: Gilles Darold <[email protected]>
Cc: Zsolt Parragi <[email protected]>
Cc: Japin Li <[email protected]>
Cc: Yuefei Shi <[email protected]>
Cc: songjinzhou <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Cc: Andrew Dunstan <[email protected]>
Cc: Tom Lane <[email protected]>
Cc: liu xiaohui <[email protected]>
Cc: Steven Niu <[email protected]>
Subject: Re: Pasword expiration warning
Date: Wed, 4 Feb 2026 10:42:59 -0600
Message-ID: <aYN3EybnG9ym-Swh@nathan> (raw)
In-Reply-To: <[email protected]>
References: <MEAPR01MB3031CF12043573A245D931AAB69EA@MEAPR01MB3031.ausprd01.prod.outlook.com>
	<CAN4CZFP4AGeO-AynwE3e62XOKqaYnXtcGT1qfj=6nw2t5FOXwA@mail.gmail.com>
	<aXuehKtwtUXWVFYp@nathan>
	<[email protected]>
	<aYDZA3r3lG2oKc5D@nathan>
	<[email protected]>
	<aYDlAhyYkjaEoEm7@nathan>
	<aYEJhk83XAqk76dP@nathan>
	<aYIUMbyDWobSi94m@nathan>
	<[email protected]>

On Wed, Feb 04, 2026 at 03:44:05PM +0100, Peter Eisentraut wrote:
> On 03.02.26 16:28, Nathan Bossart wrote:
>> +			detail = psprintf(_("The password for role \"%s\" will expire in "
>> +								INT64_FORMAT " day(s), " INT64_FORMAT
>> +								" hour(s), " INT64_FORMAT " minute(s)."),
>> +							  role, days, hours, minutes);
> 
> You cannot use INT64_FORMAT inside translatable messages.  But you can use
> PRId64.

Ah, I didn't know that.  Is this documented anywhere?  I skimmed through
our message-writing guidelines [0] but didn't see any mention of this.

> Using the type TimestampTz for what are essentially interval/duration
> quantities is a bit weird and confusing.  So maybe another placeholder would
> be more appropriate.

Sure.

> That said, I find writing plurals with "(s)" kind of lame.  It's not a good
> look.
> 
> It's a bit difficult to do this correctly when you have three separate
> values in one string.  I would consider for example just showing the number
> of days if the value is larger than one day, number hours if it's larger
> than one hour, else minutes.  I don't think you need minute-precision when
> the expiration time is several days out.

I think we still have the problem with plurals if we go this route, and
IIUC there isn't a good way to do something like errmsg_plural() here since
we are just saving the message for later.  I'm skeptical it's worth adding
new translatable-plural handling functionality for this.

> Alternatively, just print the actual expiration timestamp.

That crossed my mind, but I worried about timezone/formatting questions,
and I haven't found any examples of putting a timestamp in an error message
like this.  Is it acceptable to use pg_strftime() in a translated string?

[0] https://www.postgresql.org/docs/devel/nls-programmer.html#NLS-GUIDELINES

-- 
nathan






view thread (6+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Pasword expiration warning
  In-Reply-To: <aYN3EybnG9ym-Swh@nathan>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

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