For webapps and internal sites, I usually prefer to show both, a proper translation, which explains the error and possibly provides additional guidance, and the status or error codes plus additional details like stack traces.
This is especially true, if the set of codes is limited, because in those cases, there tend to be not just short messages, but properly translated pages for all status and error codes. The problem with those, however, is that translations are often not quite to the point, especially for technical, support or admin personnel, who actually form a second grouo of target users for status and error pages. Translations are often abbreviating or short-circuiting things slightly, which tends to confuse techies not accustomed to the message. For them, an actual code is very clear and typically undisputable.
That's why I prefer to show both, albeit the more technical codes in smaller print with additional details typically only visible on demand.