Internacionalizar Hibernate validator (múltiplos idiomas)

3 respostas
P

Pessoal, tenho uma app web, que usa hibernate validator, e precisa estar disponivel em 3 idiomas diferentes, gostaria de saber como internacionalizar as mensagens do hibernate validator para estes mesmos idiomas?

Obrigado!

3 Respostas

jamirdeajr

Olá pirado8,

Segundo a documentação basta incluir na sua aplicação o arquivo ValidationMessages_XX.properties, onde XX é a localização, ex. pt_BR.
Se você abrir o jar do hibernate-validator vai encontrar os seguintes já prontos:

ValidationMessages_de.properties (alemão)
ValidationMessages_en.properties (inglês, esta vazio pois usa o default)
ValidationMessages_fr.properties (francês)
ValidationMessages_mn_MN.properties (Mongólia?)
ValidationMessages_tr.properties (Turkish ?)
ValidationMessages.properties (o default)

Esse é o conteúdo do ValidationMessages.properties que está no jar :

# $Id: ValidationMessages.properties 19251 2010-04-20 15:28:18Z hardy.ferentschik $ javax.validation.constraints.AssertFalse.message=must be false javax.validation.constraints.AssertTrue.message=must be true javax.validation.constraints.DecimalMax.message=must be less than or equal to {value} javax.validation.constraints.DecimalMin.message=must be greater than or equal to {value} javax.validation.constraints.Digits.message=numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected) javax.validation.constraints.Future.message=must be in the future javax.validation.constraints.Max.message=must be less than or equal to {value} javax.validation.constraints.Min.message=must be greater than or equal to {value} javax.validation.constraints.NotNull.message=may not be null javax.validation.constraints.Null.message=must be null javax.validation.constraints.Past.message=must be in the past javax.validation.constraints.Pattern.message=must match "{regexp}" javax.validation.constraints.Size.message=size must be between {min} and {max} org.hibernate.validator.constraints.Email.message=not a well-formed email address org.hibernate.validator.constraints.Length.message=length must be between {min} and {max} org.hibernate.validator.constraints.NotBlank.message=may not be empty org.hibernate.validator.constraints.NotEmpty.message=may not be empty org.hibernate.validator.constraints.Range.message=must be between {min} and {max} org.hibernate.validator.constraints.URL.message=must be a valid URL org.hibernate.validator.constraints.CreditCardNumber.message=invalid credit card number org.hibernate.validator.constraints.ScriptAssert.message=script expression "{script}" didn't evaluate to true

Neste link tem essa dica e outro jeito mais avançado…
http://stackoverflow.com/questions/6261858/internationalization-in-hibernate-validators

P

jamirdeajr , obrigado pela ajuda. Tinha realmente visto os arquivos no jar do hibernate validator.

Meu problema acredito seja um pouco maior, veja bem, eu tenho um projeto maven somente para os meus modelos, pois são modelos compartilhados. Este projeto encapsula o hibernate validator e hibernate annotations, eu uso como uma lib no meu projeto web principal.

No meu projeto web principal é onde está configurado a internacionalização.

A minha dúvida agora é, onde eu coloco os arquivos properties? No projeto dos modelos? em qual pasta? algum pacote específico? Senaõ, devo por na minha aplicação web? Isso sobrescreveria os arquivos originais no jar do hibernate?

Obrigado!

jamirdeajr

Creio que deva ficar na aplicação WEB, no ‘JSR 303 Reference Implementation Reference Guide’ diz que deve ficar no diretório raiz, e somente se o hibernate-validator não encontrar irá buscar em '/org/hibernate/validator/ValidationMessages.properties’
http://www.scribd.com/doc/36370675/Hibernate-Reference

Assim mesmo dei uma pesquisada em alternativas, para alguns foi necessário criar uma ‘subpasta’ e colocar lá para ser reconhecido e em alguns falam em usar ‘/src/main/resources/’, bom, só testando mesmo.
Aqui fala alguma coisa também, é para o vraptor mas pode ser que seja útil:
http://www.guj.com.br/java/230664-vraptor-320-validationmessagesproperties-e-messagesproperties#1184314

Boa sorte!

Criado 21 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 3
Participantes 2