我已经创建了本地化的.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>
我正在使用带有hibernate 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>
但是这个解决方案在包bundle中找不到labels.properties。它在类路径中寻找,但我无法重新定位它。
更新2:
好吧现在我可以看到JSF和SPRING有不同的加载方法,而SPRING从messageSource获取bundle仍然从<f:loadBundle>
获取它们,那么我如何使<f:loadBundle>
获取翻译属性?
答案 0 :(得分:3)
Spring支持LocalChangeInterceptor
。可以将此拦截器配置为它正在侦听的属性。
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang" />
<mvc:interceptors>
然后,您需要发送带参数lang=cs_CZ
@See Spring Reference Chapter 15.6.4 LocaleChangeInterceptor了解更多详情