## What?
- Wrap the JSON parser source error with `%w` instead of rendering it
with `%v`.
- Add regression coverage that preserves both `ErrParseFailed` and the
original `json.SyntaxError` in the error chain.
Closes #1050
## Why?
The i18n parser already wraps `ErrParseFailed`, but the underlying JSON
parse error was converted to text. That made `errors.As` unable to
recover the original cause from callers that need to inspect it.