It seems there is no way to `format' that string. This is a comment in the source code of `define-error'
#+begin_quote ;; FIXME: Make `error-message-string' more flexible, e.g. allow ;; the message to be specified by a `format' string or a function. #+end_quote I think your solution to pass the error a string without properties is correct and you should go ahead with it. You should probably check out the optional arguments to `substitute-command-keys' first though. The "NO-FACE" argument seems interesting.
