我想为英语和法语用户提供英语和法语,为所有其他要求使用其他语言的用户提供英语。 我的faces-config.xml:
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>
<resource-bundle>
<base-name>fr.testi18n.messages</base-name>
<var>msg</var>
</resource-bundle>
我有3个名为messages.properties和messages_en.properties(带有英文消息)的资源文件,以及messages_fr.properties(带有法语消息)。
用户可以使用<h:selectOneMenu>
选择他们的语言,并且所选语言环境在会话范围辅助bean中注册。所有视图都有一个locale属性,其值为来自辅助bean的值。当他们选择法语或英语时,没关系:显示正确的信息但是当他们选择中文(zh)时,信息是用法语而不是英文。
为了测试,我甚至删除了行<supported-locale>fr</supported-locale>
,消息仍然是法语!
我是法国人,但我已将法语放在浏览器(Chrome)配置的最后位置。
可能是我的错误?
答案 0 :(得分:0)
所选语言环境在会话范围辅助bean中注册。
我想当你选择中文时,你不会改变你的会话变量来设置defalut local,所以如果最后一次更改是法语,那么本地将保持法语,因为你的托管bean是@SessionScoped
否则,如果您使用ajax更改本地,则需要更新(呈现)整个表单。
有关其他信息,请参阅此Q&amp; A:<default-locale> does not seem to work, instead the <supported-locale> is being used