I18n如何为我的Web应用程序提供默认语言?

时间:2015-02-24 15:05:43

标签: jsf-2 internationalization

我想为英语和法语用户提供英语和法语,为所有其他要求使用其他语言的用户提供英语。 我的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)配置的最后位置。

可能是我的错误?

1 个答案:

答案 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