2011-06-07 45 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