1

我已经创建了本地化的 .properties 文件。但我不知道如何即时更改它们。事情是我可以为语言制作一个表单选择器,但是我应该在哪里设置输出?它始终使用默认的 .properties 文件

我的表格看起来像这样

<h:form>
<h:selectOneMenu id="language" value="????">
  <f:selectItem id="item1" itemLabel="Czech" itemValue="cs_CZ" />
  <f:selectItem id="item2" itemLabel="Slovak" itemValue="sk_SK" />
  <f:selectItem id="item3" itemLabel="English" itemValue="default" />
</h:selectOneMenu>
</h:form>

我正在使用带有休眠 JSF2.0 和 J2EE1.6 的 spring

谢谢

更新:

我像这样加载了捆绑包:

 <f:loadBundle basename="bundle/labels" var="labels"/>

但我需要将其替换为:

<bean id="messageSource"
      class="org.springframework.context.support.ResourceBundleMessageSource">
            <property name="basenames">
                <list>
                    <value>Messages</value>
                    <value>labels</value>
                </list>
            </property>
</bean>

但是这个解决方案不会在包包中找到 labels.properties。它在类路径中查找,但我无法重新定位它。

更新 2:

好的,现在我可以看到 JSF 和 SPRING 有不同的加载方法,而 SPRING 从 messageSource 获取捆绑包 JSF 仍然从其中获取它们,<f:loadBundle>那么我该如何<f:loadBundle>获取已翻译的属性?

4

1 回答 1

3

Spring Support this with a LocalChangeInterceptor. This interceptor can be configured to an property it is listen to.

<mvc:interceptors>
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
          p:paramName="lang" />
<mvc:interceptors>

Then you need to send HTTP Requests with parameter lang=cs_CZ

@See Spring Reference Chapter 15.6.4 LocaleChangeInterceptor for more details

于 2012-04-18T17:10:09.440 回答