如何本地化Bean验证消息

oik*_*opo 7 localization hibernate-validator bean-validation

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

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

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

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

我不想搞乱hibernate jar,因为项目是maven并且jar被自动获取.

oik*_*opo 7

管理克服这一点,而不会搞乱hibernate jar.


如果我们要覆盖默认值ValidationMessages.properties:

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

毕竟,当locale设置为italian语言时,如果有任何被覆盖/其他验证消息(如ValidationMessages _*.properties),hibernate将首先查看后一个文件夹,并使用它们而不是默认值!

注意 此解决方案适用于MAVEN项目,否则您应将*properties.files放在/src/main/java文件夹中,如另一个类似问题评论中所述

  • 无需提取任何东西.只需添加您需要或想要覆盖的属性文件.它们需要位于类路径的根目录中.用户提供的ValidationMessages属性文件优先于内置属性文件. (3认同)