Domanda

devo esternare il bundle MessageSources molla per il supporto i18n (proprietà file) al di fuori del percorso di classe al fine di modificare le proprietà più facilmente. Come posso fare?

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

Grazie!

È stato utile?

Soluzione

Abbiamo costruito un'implementazione fonte messaggio che guarda in alto i messaggi nel DB. Quello che devi fare è creare un'implementazione MessageSource che eredita da AbstractMessageSource di primavera (al fine di ottenere tutte le funzioni, vedere javadoc).

È necessario attuare, a minimo il metodo astratto 'resolveCode (String, Locale)' (ma d'esecuzione 'resolveCodeWithoutArguments (String, Locale)' aumenterà le prestazioni), che delega ad un puntamento DAO per quel semplice tavolo, con un definizione come questa:

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

codice e locale costituiscono un indice univoco.

E il gioco è fatto. Naturalmente, si aggiungerà alcune funzionalità di cache, e di fornire un comportamento "degrado locale" (vale a dire se "en_US" non viene trovato, provare "en"), sia a livello MessageSource dao- o.

Questo funziona perfettamente.

Altri suggerimenti

Controlla questo per informazioni su questo problema, ma penso che non è una buona pratica di avere i file al di fuori del contesto di Tomcat come non si sa mai dove si sta per essere distribuito l'applicazione.

Ma in caso di necessità, si trovano alcune soluzioni piuttosto simpatica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top