$NewMessage is a global variable which, if set, is applied to the symbol name and tag of messages that are requested but have not yet been defined.
$NewMessage is applied to the symbol name, tag and language of a message if an explicit language is specified.
Mathematica looks for the value of name::tag or name::tag::lang after $NewMessage has been applied.
You can set up $NewMessage to read the text of messages from files when they are first needed.
A typical value for $NewMessage might be Function[ToExpression[FindList[files, ToString[MessageName[#1, #2]]]]].
See The Mathematica Book: Section 2.8.21.
See also: $NewSymbol.