2011-06-07 42 views
6

Hibernate验证器是否支持国际化。我看到了jar,我可以看到各种ValidationMessages.properties文件。Hibernate验证器中的国际化

我们可以创建自己的国际化的自定义错误消息吗?我不想使用Hibernate验证器中默认提供的错误消息。

我们需要使用我们自己的自定义消息,他们应该国际化。

以及Hibernate验证器支持哪些语言。在罐子里,我看到了英文,法文,德文,土耳其文和蒙古文的属性文件。

我们可以添加更多的语言西班牙,葡萄牙等等?

回答

6

I18N是Bean验证规范的组成部分。

默认情况下,消息是从名为“ValidationMessages”的资源包中检索的。因此,只需为需要覆盖来自Hibernate Validator的缺省消息(从包“org.hibernate.validator.ValidationMessages”中检索到)的语言提供此捆绑包(例如ValidationMessages.properties)即可。

除了您提到的语言,Hibernate Validator 4.2将提供中文(HV-359)和西班牙文(HV-483)消息。

如果您不想使用基于文件的资源包,您还可以提供自己的MessageInterpolatorResourceBundleLocator实现。

使用Hibernate验证的PlatformResourceBundleLocator它也可以使用其他名称束比“ValidationMessages”是这样的:

Validation 
    .byProvider(HibernateValidator.class) 
    .configure() 
    .messageInterpolator(
     new ResourceBundleMessageInterpolator(
      new PlatformResourceBundleLocator("com.mycompany.Messages"))) 
    .buildValidatorFactory() 
    .getValidator();` 
+0

嗨。谢谢回复。我可以覆盖来自hibernate验证器的默认消息。但为了工作,我必须将我的ValidationMessages属性文件放入classpath(默认包)中。如果我把它放在任何其他软件包中,它不会收到我的消息,而是默认消息。有没有什么办法可以将自定义ValidationMessages属性文件放在其他包中,并仍然可以将其选中。 – ashishjmeshram 2011-06-08 05:07:27

+0

@Ashish我更新了如何使用其他软件包名称的答案。 – Gunnar 2011-06-08 17:23:27