| From: | "Euler Taveira" <euler(at)eulerto(dot)com> |
|---|---|
| To: | "Nathan Bossart" <nathandbossart(at)gmail(dot)com>, "Peter Eisentraut" <peter(at)eisentraut(dot)org> |
| Cc: | "Gilles Darold" <gilles(at)darold(dot)net>, "Zsolt Parragi" <zsolt(dot)parragi(at)percona(dot)com>, japin <japinli(at)hotmail(dot)com>, "Yuefei Shi" <shiyuefei1004(at)gmail(dot)com>, songjinzhou <tsinghualucky912(at)foxmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, "Andrew Dunstan" <andrew(at)dunslane(dot)net>, "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "liu xiaohui" <liuxh(dot)zj(dot)cn(at)gmail(dot)com>, "Steven Niu" <niushiji(at)gmail(dot)com> |
| Subject: | Re: Pasword expiration warning |
| Date: | 2026-02-04 21:12:07 |
| Message-ID: | 5798afb7-b10c-436f-987e-14fb625df7d0@app.fastmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Wed, Feb 4, 2026, at 1:42 PM, Nathan Bossart wrote:
> 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.
>
In the gettext documentation [1]. Maybe we should also add this information to
the referred section.
>> 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.
>
That's correct. You should use ngettext(). Using the plural form means better
translation. Looking at some messages in the catalog, the developers tend to
ignore the fact that the sentence has a plural form too. Sometimes it is hard
to write a message if multiple parts of the message have plural form. I
completely understand your resistance.
>> 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?
>
Although we can add the expiration timestamp, I don't think that's a good UI
because (a) there might be timezone difference and (b) you need to do the math
of the remaining time. We can add it but when we are talking about time until a
certain event, we are expecting a countdown format. If the user decides to
change the password because of this message, we don't need inform the exact
remaining time. I agree with Peter that just the largest unit is sufficient for
the user to take some action. Let's say the remaining time is 1 day and 14
hours. If I just inform the 1 day, I know that I have at least 24 hours to
change it and it is sufficient to postpone that action to tomorrow because your
work day ends in a few minutes.
[1] https://www.gnu.org/software/gettext/manual/html_node/No-string-concatenation.html#The-_003cinttypes_002eh_003e-macros
[2] https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
--
Euler Taveira
EDB https://www.enterprisedb.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Nathan Bossart | 2026-02-04 21:43:50 | Re: refactor architecture-specific popcount code |
| Previous Message | Nathan Bossart | 2026-02-04 21:00:03 | Re: Pasword expiration warning |