12 mayo 2007

Spring 2.0, SVN y i18n

En el post anterior comentaba que tenía un problema para subir el spring.jar al respositorio de código... No sé qué pasaba, pero lo he resuelto actualizándome a Spring 2.0 y subiéndo los jars por módulos, así que ya tenemos otra vez el proyecto Amigo Invisible Online completo en el repositorio y totalmente openSource.

También he i18n los errores que tenía hardcodeados en código, de la siguiente manera.

He utilizado el interceptor tal como se describe en la guía de Spring:

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

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName"><value>siteLanguage</value></property>
</bean>

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

Esto permite que una página sea i18n, y que además, pasando la cadena siteLanguage como param GET, se cambia automáticamente el leguaje a la codificación elegida (si existe!):

http://127.0.0.1:8080/amigoinvisible/index.htm?siteLanguage=en


Pero cómo acceder desde una clase java a esta i18n? Facil, inyecta a tu controller los siguientes beans:

<property name="bundle" ref="messageSource"/>
<property name="localeResolver" ref="localeResolver"/>


Y en tu código utiliza lo siguiente:

bundle.getMessage("form.val.amigo.max",new String[0],localeResolver.resolveLocale(arg0))


Done.