我已经创建了本地化的 .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>
我正在将 spring 与 hibernate JSF2.0 和 J2EE1.6 一起使用
谢谢
更新:
我像这样加载了包:
<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>
获取翻译后的属性?
最佳答案
Spring 用 LocalChangeInterceptor
支持这个.此拦截器可以配置为其监听的属性。
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang" />
<mvc:interceptors>
然后你需要发送带有参数lang=cs_CZ
的HTTP请求
@见Spring Reference Chapter 15.6.4 LocaleChangeInterceptor了解更多详情
关于java 网页本地化支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10213172/