LGTM, except that it should take the foreign-status object as well, surely.  That will give an indication of which localization catalogue to look in.

On Fri, Aug 14, 2020 at 12:35 PM Lassi Kortela <xxxxxx@lassi.io> wrote:
Can we agree on something like this for the next draft?

(let ((localize (foreign-status-ref st 'localize-message)))
   (or (and localize
            (or (localize "de-DE")
                (localize "en-GB")
                (localize "en-US")))
       (foreign-status-ref st 'message)))

I agree to withdraw my proposal for a 'message lambda taking a variable
number of arguments. 'localize-message should always be either #f or a
lambda. The lambda should always take exactly one argument, no more no
less. BCP 47 string.