Localization 如何本地化Bean验证消息

Localization 如何本地化Bean验证消息,localization,bean-validation,hibernate-validator,Localization,Bean Validation,Hibernate Validator,我有一个类,并使用注释来验证类属性 我的网页(jsf2.2/primefaces/maven)是多语言的(deutch、FR rench、IT alian) 我的问题是hibernate验证器支持某些语言(de、en、es、fr、hu、tr、pt_BR、mn_mn、zn_CN),但不支持意大利语!(列在jar中,org->hibernate->validator) 因此,当我使用意大利语版本的网页时,验证消息以英语显示(默认选择hibernate) 我如何覆盖它,并提供自定义的意大利验证消息 我

我有一个类,并使用注释来验证类属性

我的网页(jsf2.2/primefaces/maven)是多语言的(deutch、FR rench、IT alian)

我的问题是hibernate验证器支持某些语言(de、en、es、fr、hu、tr、pt_BR、mn_mn、zn_CN),但不支持意大利语!(列在jar中,org->hibernate->validator) 因此,当我使用意大利语版本的网页时,验证消息以英语显示(默认选择hibernate)

我如何覆盖它,并提供自定义的意大利验证消息


我不想弄乱hibernate jar,因为项目是maven,jar是自动获取的。

您可以通过放置

 ValidationMessages_it_IT.properties
在你的课堂路径上


这个问题是

的翻版,它在不干扰hibernate jar的情况下成功地解决了这个问题


如果要覆盖默认的
验证消息.properties

  • 我们可以选择适当的文件(提示:从hibernate复制它们) jar:
    ValidationMessages.properties
    ValidationMessages\u de.properties
    ValidationMessages\u fr.properties
    )并相应地编辑它们
  • 将所有内容放在我们项目的
    src/main/resources
    文件夹中。所以 该文件夹包含所有*.properties文件
  • *为更多语言提供验证(除 hibernate的默认语言(langs),即意大利语,我们创建了一个
    ValidationMessages\u it.properties
    并将其放在
    src/main/resources
    文件夹中。(
    src/main/resources/ValidationMessages\u it.properties
  • 毕竟,当locale设置为意大利语时,hibernate将首先查看后一个文件夹,以防出现任何重写/其他验证消息(如ValidationMessages_*.properties),并使用它们而不是默认的

    小心 此解决方案适用于MAVEN项目,否则应将*properties.files放在
    /src/main/java
    文件夹中


    将属性文件放在src/main/resources文件夹下,它们应命名为
    ValidationMessages{locale code}.properties
    ,默认为
    ValidationMessages.properties
    ,内容如下所示:

    invalid.phone.number = Invalid phone number
    
    然后在你的bean中:

    @Pattern(regexp = "^[0-9]+[0-9\\-]{3,}[0-9]+$", message = "{invalid.phone.number}")
        private String number;
    

    不需要提取任何东西。只需添加所需或要覆盖的属性文件。它们需要位于类路径的根中。用户提供的ValidationMessages属性文件优先于内置文件。