使用i18n的客户端机器区域设置

时间:2013-06-03 06:29:09

标签: java spring internationalization locale

我正在尝试根据客户端计算机的操作系统区域设置使我的应用程序正常工作。目前它适用于服务器机器的语言环境。我正在使用字符串frmae工作。 Apache Tomcat 7用作服务器。这是我使用的配置。任何帮助都会得到满足。

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

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


    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" >
        <property name="interceptors">
            <list>
                <ref bean="localeChangeInterceptor" />
            </list>
        </property>
    </bean>


<!--     Register the welcome.properties -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames">
                    <list>
                        <value>i18n.api/api</value>
                        <value>i18n.exceptions/exceptions</value> 
                        <value>i18n.common/common</value>   
                        <value>i18n.login/login</value>
                        <value>i18n.plan/plan</value>
                        <value>i18n.customer/customer</value>
                        <value>org.springframework.security.messages</value> 
                        <value>org.hibernate.validator.ValidationMessages</value> 
                    </list>
                </property>
    </bean>

1 个答案:

答案 0 :(得分:0)

请参阅supported handler method argument types on Spring doc。您可以在处理程序方法上注入用户的Locale,如下所示:

@RequestMapping("/home")
public String home(Locale userLocale) {
    // do something with userLocale

    return "home";
}

Locale的类型为java.util.Locale。

另请参阅ServletRequestgetLocale()方法。客户端必须在其请求中提供Accept-Language标头,否则将使用服务器的区域设置。我假设Spring的行为与此相同