@@ -55,12 +55,16 @@ type Validator interface {
5555 // This is use to generate the validation error message. An empty slice can be returned.
5656 // See `lang.Language.Get()` for more details.
5757 MessagePlaceholders (ctx * Context ) []string
58+
59+ overrideMessage (langEntry string )
60+ getMessageOverride () string
5861}
5962
6063// BaseValidator composable structure that implements the basic functions required to
6164// satisfy the `Validator` interface.
6265type BaseValidator struct {
6366 component
67+ messageOverride string
6468}
6569
6670func (v * BaseValidator ) init (options * Options ) {
@@ -86,6 +90,22 @@ func (v *BaseValidator) IsType() bool { return false }
8690// MessagePlaceholders returns an empty slice (no placeholders)
8791func (v * BaseValidator ) MessagePlaceholders (_ * Context ) []string { return []string {} }
8892
93+ func (v * BaseValidator ) overrideMessage (langEntry string ) {
94+ v .messageOverride = langEntry
95+ }
96+
97+ func (v * BaseValidator ) getMessageOverride () string {
98+ return v .messageOverride
99+ }
100+
101+ // WithMessage set a custom language entry for the error message of a Validator.
102+ // Original placeholders returned by the validator are still used to render the message.
103+ // Type-dependent and "element" suffixes are not added when the message is overridden.
104+ func WithMessage [V Validator ](v V , langEntry string ) V {
105+ v .overrideMessage (langEntry )
106+ return v
107+ }
108+
89109// FieldRulesConverter types implementing this interface define their behavior
90110// when converting a `FieldRules` to `Rules`. This enables rule sets composition.
91111type FieldRulesConverter interface {
0 commit comments