Templates
go
func SetMessageTemplates(templates map[string]string, lang ...language.Tag)Merge templates into the given locale's template set, overriding any existing entries. The locale defaults to the package default (language.Chinese) when omitted.
Examples
Default locale (Chinese)
go
govalid.SetMessageTemplates(map[string]string{
"required": "不能留空",
"min": "应当不小于",
})Specific locale
go
govalid.SetMessageTemplates(map[string]string{
"required": "must not be empty",
}, language.English)Adding a new locale
The locale is created on first call:
go
govalid.SetMessageTemplates(map[string]string{
"required": " は必須です",
}, language.Japanese)Diagnostic templates
go
govalid.SetMessageTemplates(map[string]string{
"_checkerNotFound": "未知的校验规则",
"_paramError": "校验规则参数错误",
"_valueTypeError": "字段类型不支持该规则",
"_fieldNotFound": "引用的字段不存在",
"_unknownErrorTemplate": "校验失败",
})Template grammar
| Pattern | Effect |
|---|---|
Plain string ("不能为空") | Prepended with the field label, limit value appended if set |
Contains {field} / {limit} | Placeholders replaced verbatim |
Wrapped in {{ … }} | Skip the label prefix and the limit suffix entirely |
For examples and edge cases, see Error Messages.
Locale fallback
| Situation | Result |
|---|---|
| Locale registered, key registered | Use the entry |
| Locale registered, key missing | Fall back to _unknownErrorTemplate of that locale |
| Locale not registered | Fall back to the default locale's table |
Concurrency
SetMessageTemplates is not synchronized. Mutate templates at startup; if you must change them at runtime, do so behind your own mutex with no concurrent Check calls in flight.