Pergunta

Eu tenho que externalizar o pacote Spring MessageSources para o suporte i18N (arquivos de propriedades) fora do caminho de classe para modificar as propriedades com mais facilidade. Como eu posso fazer isso ?

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="test-messages"/>

Obrigado!

Foi útil?

Solução

Criamos uma implementação de fonte de mensagem que procure mensagens no banco de dados. O que você precisa fazer é criar uma implementação de medições que herda do Spring AbstractMesagesource (para obter todos os recursos, consulte Javadoc).

Você deve implementar no mínimo o método abstrato 'ResolveCode (String, Locale)' (mas implementar 'ResolveCoDewithOtarguments (String, Locale)' aumentará suas performances), que delega a um dao apontando para essa tabela simples, com uma definição como isto:

table translation (
  translation_id number pk
  code varchar(20)
  locale varchar(5)
  translation varchar(100)
)

Código e localidade formam um índice exclusivo.

E você terminou. Obviamente, você adicionará alguns recursos de cache e fornecerá comportamento de "degradação do local" (ou seja, se "en_us" não for encontrado, tente "en"), seja no nível da DAO- ou MessageRce.

Isso funciona perfeitamente.

Outras dicas

Verifique isso fio Para obter informações sobre esse problema, mas acho que não é uma boa prática ter arquivos fora do contexto do Tomcat, pois você nunca sabe onde ele será implantado seu aplicativo.

Mas, caso você precise, você encontrará algumas soluções bastante boas lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top