春季国际化3

时间:2013-10-17 21:33:38

标签: spring multilingual

我有点震惊,想知道是否有任何方法可以减少开销。我面临的问题是我有一个JSP页面,其中包含用户ID /密码textfileds和语言作为下拉框,其中包含两种语言“EN”,“ES”。

当我提供用户/密码并从下拉列表中选择“ES”时,我对@Controller方法执行POST操作,将值保存到该用户的DB。然后我将更改后的语言添加到模型对象

model.addAttribute("language", request.getParameter("language"));

方法的返回类型是STRING(下一个JSP页面的名称)。

期望是下一个JSP页面应该以西班牙语显示。但它不会发生。我在myapp-servlet.xml中定义了“LocaleChangeResolver”,如下所示:

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

在我的JSP中,我定义了tablib:

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

我试图从属性文件中读取的标签是

<spring:message code="label.formName"/>

任何人都可以帮助我,为什么JSP没有提取语言的变化,而是用英语而不是西班牙语显示文本......

先谢谢。

1 个答案:

答案 0 :(得分:0)

如果您希望自己的程序以不同的语言“说话”,可以做几件事。

例如,我在applicationContext.xml中有以下配置:

<!-- Locale settings -->
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- My file with messages are: messages_en.properties (for English) and messages_lt.properties (for Lithuanian) -->
        <property name="basename" value="classpath:messages"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

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

    <!-- I'm resolving my locale according to browser's Cookie -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="lt"/>
    </bean>

在我的情况下,我有两个文件:messages_lt.properties和messages_en.properties。在您的情况下,您需要创建名为messages_en.properties(英语)和messages_es.properties(西班牙语)的文件。每个文件都应包含:

# messages_en.properties
label.formName=My form

# messages_es.properties
label.formName=Mi forma

然后(正如您所提到的)您需要在JSP页面中添加taglib并使用它:

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<...>
<spring:message code="label.formName"/>

希望这会有所帮助:)

编辑:MKYONG.com的精彩教程:http://www.mkyong.com/spring-mvc/spring-mvc-internationalization-example/