JSF语言环境:浏览器定义的语言似乎被忽略了

目前我的团队正在用java开发一个web 2.0应用程序,我们正在使用JSF作为表示层。 我们从表示层开始,所以我们还没有添加业务和数据层。

我们使用的技术: – JSF(Mojarra 2.0.3) – Primefaces 2.1(JSF组件库) – Spring Security 3.0.5 – jBoss 5.1

我被要求为应用添加区域设置支持。 所以我配置了faces-config.xml文件,如下所示:

  en pt en es   com...i18n.MessageBundle   

我创建了MessageBundle后缀文件并部署了应用程序。 我读到JSF使用三个条件来选择语言环境:1)请求语言环境(Accept-Language请求标头)和支持的语言环境之间的匹配2)faces配置文件中定义的应用程序默认语言环境3)JVM默认语言环境

当我尝试在浏览器选项中更改语言时,应用程序不会更改区域设置。 即使我只配置一种语言而不是默认语言。 我在这里错过了什么吗? 这是预期的,或者实际上它应该在我更改浏览器语言时改变内容(假设它是受支持的语言)?

我非常感谢任何提示或至少指示我在哪里可以找到答案,因为我已经谷歌搜索没有运气。

提前致谢。

更改浏览器定义的区域设置后,需要在浏览器中刷新页面。 您还需要意识到用于本地化转换/validation消息,而不是本地化内容。 在那里你应该在faces-config.xml使用和在XHTML中使用

除了其他答案,我还可以添加以下注释:您需要创建与定义语言一样多的语言文件。 如果你有一个没有_xx扩展名的com...i18n.MessageBundle.properties ,里面的消息将是现有文件的默认值,但不是非现有文件的默认值。 例:

 messages.properties (containing English) messages_fr.properties (containing French) 

如果您声明“en”语言,则不会显示英语消息! 你必须创建 :

 messages.properties (containing default values not found in other files) messages_en.properties (containing English) messages_fr.properties (containing French) 

我终于发现了问题所在。 在代码中的某处有一个语言环境声明,因此,无论我在浏览器中选择哪种语言,所呈现的语言都将始终相同。 一旦我删除了该声明,一切都开始按原样运行。

很抱歉没有尽快发布。

另外,我想感谢大家的提示。 即使答案不在其中,我一路上学到了很多东西。

你确定你有一个名为的compearate消息包:com … i18n.MessageBundle_es和com … i18n.MessageBundle_pt?