Frage

Ich habe die Feder MessageSources für i18n Unterstützung (Properties-Dateien), die außerhalb des Classpath, um Eigenschaften zu modifizieren leichter bündeln externalisieren. Wie kann ich das tun?

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

Danke!

War es hilfreich?

Lösung

Wir haben eine Nachricht Source-Implementierung aufgebaut, die Nachrichten im DB nachschlägt. Was Sie tun müssen, ist eine Message Implementierung an, dass erbt von Frühling AbstractMessageSource (um alle Funktionen zu erhalten, finden Sie javadoc).

Sie haben bei minimal der abstrakten Methode zu implementieren ‚resolveCode (String, Locale)‘ (aber Implementierung ‚resolveCodeWithoutArguments (String, Locale)‘ wird Ihre Leistungen erhöhen), die Delegierten zu einem DAO deutet auf die einfache Tabelle, mit einem Definition wie folgt aus:

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

Code und locale bilden einen eindeutigen Index.

Und du bist fertig. Natürlich, werden Sie einige Cache-Funktionen und bieten „locale Abbau“ Verhalten (das heißt, wenn „en_US“ nicht gefunden wird, versuchen „en“), entweder auf DAO oder Message-Ebene hinzuzufügen.

Das funktioniert perfekt.

Andere Tipps

Überprüfen Sie diese Faden für Informationen bezüglich dieses Problems, aber ich denke, ist keine gute Praxis Dateien außerhalb des Katers Kontext zu haben, wie Sie nie wissen, wo es Ihre Anwendung entfaltet werden wird.

Aber falls Sie brauchen, werden Sie ein paar ziemlich nette Lösungen dort finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top