But when a new user sees something unintelligible like "Solve::ratnz"
and the word "unable", it strongly suggests that something is wrong.
I have to say I think this is a stretch. True, "Solve::ratnz" is meaningless. That part of every error message is going to be fairly meaningless. As John Doty noted, it is a tag and has use e.g. in
Quiet or other functions he noted. The fact that it shows up first in the message is a design decision that predates my time here. As for "unable", one simply has to read the message. Failure to do so is not a fault in the message. Having grown up in the days of the IBM Fortran error messages, I'm quite comfortable stating that this particular message is quite fine as is. It spells out the situation accurately.
The small issue of this particular message is not whether it should be reworded (I doubt any one here will take the time to do that) but rather whether it should simply be removed. Offhand I do not see a down side to removal. (Rewording, in contrast, carries the risk that another group will come along and dislike specifics of that wording, leading to a rinse-and-repeat cycle.)
There is a much larger issue which is getting some discussion in house. It is whether or how to separate messages into pools or levels (presumably in a way that would be user configurable but have default settings). So perhaps there could be warnings, fatal errors, possibly incorrect result errors, etc. Any undertaking in this direction would be a major one and so I'm not sure we'll want to pursue it. But there are of course benefits to separating levels and/or classes of "error".