Cómo externalizar un paquete MessageSources primavera fuera de la GUERRA
-
21-09-2019 - |
Pregunta
Tengo que externalizar el paquete MessageSources resorte por un soporte de i18n (archivos de propiedades) fuera de la ruta de clases con el fin de modificar las propiedades más fácilmente. ¿Cómo puedo hacer eso?
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="test-messages"/>
Gracias!
Solución
Hemos construido una implementación de código de mensaje que mira hacia arriba mensajes en el PP. Lo que tienes que hacer es crear una implementación MessageSource que hereda de AbstractMessageSource de la primavera (con el fin de obtener todas las características, ver javadoc).
Hay que aplicar al mínimo el método abstracto 'resolveCode (String, Locale)' (pero 'resolveCodeWithoutArguments (String, Locale)' ejecución aumentarán sus actuaciones), que delega en un puntero que DAO para así de simple mesa, con una definición como la siguiente:
table translation (
translation_id number pk
code varchar(20)
locale varchar(5)
translation varchar(100)
)
código y la configuración regional forman un índice único.
Y ya está. Por supuesto, va a agregar algunas capacidades de caché, y proporcionar un comportamiento "degradación local" (es decir, si no se encuentra "en_US", intentan "en"), ya sea a nivel MessageSource dao- o.
Esto funciona perfectamente.
Otros consejos