Are diagnostic messages supposed to be read by machines only? I thought that's what error codes are for.
If the messages are supposed to be read by humans, how can the client request the language? Maybe specify an Accept-Language header with the same semantics as http.
Maybe the locale should come as part of initialize or didChangeConfiguration.
The locale used by the client should come in the initialize request. In VS Code we distinguish between the request locale (for example de-CH) and the one VS Code chooses to use (de) in case the server implements its own language lookup.
Dups #754 which got addressed for 3.16
Most helpful comment
Maybe the locale should come as part of
initializeordidChangeConfiguration.