2011-06-22 16 views
5

he configurar la primavera como se especifica en la siguiente guía:? http://www.springbyexample.org/examples/basic-webapp-internationalization-spring-config.htmlprimavera: Configuración local

Si tuviera que añadir locale = fr, por ejemplo, al final de una URL de la configuración regional cambia a francés .

Sin embargo, en mi caso, quiero configurar la configuración regional cuando el usuario inicia sesión ya que esta información está asociada a su perfil. Intenté usar localeResolver.setLocale (solicitud, respuesta, nueva configuración regional ("fr")) (donde localeResolver es una instancia de SessionLocaleResolver) para especificar la configuración regional, pero esto no tiene ningún efecto.

¿Alguna idea de lo que estoy haciendo mal? ¿Me estoy acercando a este tema de la manera correcta?

Respuesta

0

Probablemente pueda echar un vistazo al proyecto Spring Roo. Hay un complemento de internacionalización de Spring que se está utilizando en Spring Roo que permite el cambio rápido de Locale dentro de una aplicación web de Spring generada automáticamente desde Roo.

0

¿Cómo se determina que la configuración regional no se ha establecido? Si espera que la configuración regional correcta esté presente en HttpServletRequest, esto no es cierto: su valor es manejado por el contenedor de servlet y, por lo tanto, es inmutable. En su lugar, debe confiar en que Spring inyectará un valor adecuado a un parámetro de método con la clase Locale en su controlador. Otra forma de obtener la configuración regional es usando RequestContextUtils.getLocale(HttpServletRequest request) directamente.

+0

Estoy tratando de establecer la configuración regional programáticamente. Los mensajes todavía están en inglés. En su lugar, utilizo el método "locale = fr", los mensajes ahora se cargan como en francés. – NRaf

+0

indique su código de cómo recupera la configuración regional del usuario actual del entorno –

5

recomendaría tratar de establecer regional predeterminada como:

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> 
    <property name="defaultLocale" value="fr_FR" /> 
</bean> 

Algo de información útil se encuentra en post del blog Configuring locale switching with Spring MVC 3.

11

localeResolver.setLocale funciona bien para mí, intentar algo como esto:

applicationContext

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" 
    p:basename="messages/messages" p:fallbackToSystemLocale="false" /> 

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

my_page.jsp

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<html> 
    <body> 
     <p><spring:message code="my.message"/></p> 
    </body> 
</html> 

\ src \ Main \ Resources \ Mensajes \ mensajes. propiedades

my.me ssage = Mensaje (idioma por defecto)

\ src \ principales \ Resources \ Mensajes \ messages_en.properties

my.message = Mensaje en Inglés

\ src \ \ principales recursos \ mensajes \ messages_fr.properties

my.message = Mensaje en francés

controlador

@Controller 
@RequestMapping("/") 
public class SampleController { 
    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String welcome(HttpServletRequest request, HttpServletResponse response) { 
     LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); 
     localeResolver.setLocale(request, response, StringUtils.parseLocaleString("fr")); 
     return "my_page"; 
    } 
} 

Con este código me sale "Mensaje en francés", si cambio de mensaje "fr" a "en" consigo "Mensaje en Inglés", y sin llamada setLocale consigo"(idioma predeterminado)". Cambio de StringUtils.parseLocaleString ("fr") a la nueva configuración regional ("fr") da los mismos resultados.

Cuestiones relacionadas