我在此链接上找到了答案。我认为它可以帮助你:
https://fluentvalidation.net/localization#default-messages
如果您想替换所有(或部分)FluentValidation 的默认消息,那么您可以通过实现自定义版本的 ILanguageManager 接口来做到这一点。
例如,NotNull 验证器的默认消息是“{PropertyName}”,不得为空。如果您想为应用程序中所有 NotNull 验证器的使用替换此消息,您可以编写自定义语言管理器:
public class CustomLanguageManager : FluentValidation.Resources.LanguageManager {
public CustomLanguageManager() {
AddTranslation("en", "NotNullValidator", "'{PropertyName}' is required.");
}
}
这里我们有一个继承自基础 LanguageManager 的自定义类。在其构造函数中,我们调用 AddTranslation 方法,传入我们正在使用的语言、我们想要覆盖的验证器的名称以及新消息。
完成此操作后,我们可以通过在应用程序启动例程期间设置静态 ValidatorOptions 类中的 LanaguageManager 属性来替换默认 LanguageManager:
ValidatorOptions.LanguageManager = new CustomLanguageManager();
这是一个简单的示例,它仅替换了一个验证者的英语消息,但可以扩展为替换所有语言的消息。如果您想从 FluentValidation 默认以外的完全不同的位置加载消息(例如,如果您想将 FluentValidation 的默认消息存储在数据库中),您也可以直接实现 ILanguageManager 接口,而不是从默认 LanguageManager 继承。
当然,如果您只想用验证器替换此消息,那么您可以使用 WithMessage("'{PropertyName}' is required");