【问题标题】:How to localize Bean Validation messages如何本地化 Bean Validation 消息
【发布时间】:2014-11-05 16:07:32
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: localization bean-validation hibernate-validator


    【解决方案1】:

    设法克服了这个问题,而不会弄乱 hibernate jar。


    如果我们想覆盖默认的ValidationMessages.properties

    1. 我们可以选择合适的文件(提示:从休眠中复制它们 罐子:ValidationMessages.properties, ValidationMessages_de.properties, ValidationMessages_fr.properties) 并进行相应的编辑。
    2. 将所有内容放入我们项目的src/main/resources文件夹中。所以 该文件夹包含所有 *.properties 文件。
    3. *为更多语言提供验证(除了 hibernate 的默认语言), f.e.意大利语,我们创造了一个 ValidationMessages_it.properties 并将其放在 src/main/resources 文件夹中。 (src/main/resources/ValidationMessages_it.properties)。

    毕竟,当语言环境设置为意大利语时,hibernate 将首先查看后一个文件夹,以防任何覆盖/其他验证消息(如 ValidationMessages_*.properties),并使用它们而不是默认的!

    注意 此解决方案适用于 MAVEN 项目,否则您应该将 *properties.files 放在 /src/main/java 文件夹 as mentioned in another similar question comment

    【讨论】:

    • 无需提取任何东西。只需添加您需要或想要覆盖的属性文件。它们需要位于类路径的根目录中。用户提供的 ValidationMessages 属性文件优先于内置的。
    【解决方案2】:

    您可以通过将

     ValidationMessages_it_IT.properties
    

    在你的类路径上。

    此问题与Localization with bean validation in JSF重复

    【讨论】:

      【解决方案3】:

      将属性文件放在 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-02
        • 1970-01-01
        相关资源
        最近更新 更多