Question

Je dois extérioriser le faisceau de MessageSources de printemps pour le support i18n (fichiers de propriétés) en dehors du classpath afin de modifier les propriétés plus facilement. Comment puis-je faire?

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

Merci!

Était-ce utile?

La solution

Nous avons construit une implémentation source de message qui recherche des messages dans le DB. Ce que vous devez faire est de créer une implémentation MessageSource qui hérite de AbstractMessageSource de printemps (afin d'obtenir toutes les fonctionnalités, voir javadoc).

Vous devez mettre en œuvre au minimum la méthode abstraite « resolveCode (String, Locale) » (mais la mise en œuvre « resolveCodeWithoutArguments (String, Locale) » augmentera vos performances), qui délègue à un pointage de DAO à cette table simple, avec définition telle que celle-ci:

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

code et locale forment un index unique.

Et vous avez terminé. Bien sûr, vous allez ajouter des fonctionnalités de cache, et fournir un comportement « de la dégradation locale » (à savoir si « en_US » est introuvable, essayez « en »), que ce soit au niveau MessageSource ou Dao.

Cela fonctionne parfaitement.

Autres conseils

Cochez cette pour plus d'informations à ce sujet, mais je pense que c'est pas une bonne pratique d'avoir des fichiers en dehors du contexte tomcat que vous ne savez jamais où il va déployer votre application.

Mais dans le cas où vous avez besoin, vous y trouverez des solutions assez agréable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top