Configuración Básica para Internacionalización
Para gestionar contenido multilingüe en Spring MVC, defina un bean de mensajes en la configuración XML:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="mensajes" />
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
Cotnrolador para Recuperaicón de Mensajes
@Controller
@RequestMapping("/global")
public class ControladorGlobal {
@GetMapping("/test")
public String pruebaSolicitud(
HttpServletRequest solicitud,
Model modelo,
@RequestParam(defaultValue = "es") String idioma
) {
ContextoSolicitud contexto = new ContextoSolicitud(solicitud);
modelo.addAttribute("moneda", contexto.getMessage("moneda"));
modelo.addAttribute("fecha", contexto.getMessage("fecha"));
// Lógica adicional del modelo
return "vistaGlobal";
}
}
Vista JSP con Etiquetsa de Internacionalización
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<body>
${moneda}<br/>
${fecha}<br/>
<spring:message code="moneda"/>:<br/>
<spring:eval expression="modeloContenido.monto"/>
</body>
Implementación Basada en Sesión
Agregue interceptores y resolutores en la configuración:
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
</mvc:interceptors>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>
Modificación del Controlador para Sesiones
@GetMapping("/test")
public String pruebaSesion(
HttpServletRequest solicitud,
Model modelo,
@RequestParam String tipoIdioma
) {
Locale locale = tipoIdioma.equals("es") ?
new Locale("es", "ES") : Locale.US;
solicitud.getSession().setAttribute(
SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,
locale
);
// Lógica de mensajes internacionalizados
}
Implementación Basada en Cookies
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="idioma"/>
<property name="cookieMaxAge" value="100000"/>
</bean>
Controlador para Gestión de Cookies
@GetMapping("/test")
public String pruebaCookie(
HttpServletRequest solicitud,
HttpServletResponse respuesta,
@RequestParam String tipoIdioma
) {
Locale locale = tipoIdioma.equals("es") ?
new Locale("es", "ES") : Locale.US;
new CookieLocaleResolver().setLocale(solicitud, respuesta, locale);
// Lógica de mensajes
}
Implementación Basada en URL
Resolutador personalizado:
public class ResolutadorIdiomaPersonalizado implements LocaleResolver {
private Locale localeActual;
public Locale resolveLocale(HttpServletRequest solicitud) {
return localeActual;
}
public void setLocale(HttpServletRequest solicitud, HttpServletResponse respuesta, Locale locale) {
localeActual = locale;
}
}
<bean id="localeResolver" class="paquete.ResolutadorIdiomaPersonalizado"/>