$MODULE alpha INLINE

INLINE writes one file, alpha.hh: the declarations as usual, then — before the closing #endif — every definition, each marked inline, and the per-message text functions as inline functions.

The helpers (locale matching, value appending) go into namespace mstring_detail_v1, each block behind its own include guard, so several INLINE modules can be included into one translation unit, and an INLINE module next to an ordinary one (whose helpers live in an unnamed mstring_local_v1) does not clash. The v1 changes if a later mstring changes the helpers.

With mstring_generate(), pass INLINE so the build does not wait for a source file:

mstring_generate(GEN alpha.msg INLINE)

When to use it: small modules, a header-only library, or when the caller should be able to inline a string function. A large module compiles into every translation unit that includes it — prefer the ordinary form there.