Come esternare un fascio Primavera MessageSource al di fuori della GUERRA
-
21-09-2019 - |
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!
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