1

我的应用程序支持国际化和本地化,每个用户都可以选择自己喜欢的语言,应用程序会完美地体现出来。问题是当第一个用户选择英语而第二个用户选择法语时,第一个用户的资源包将在刷新他的页面后从法语资源中读取。

我正在使用以下代码在两种语言之间进行切换:

public void changeToEnglish()
    {
        FacesContext context = FacesContext.getCurrentInstance();
        Locale currentLocale = context.getViewRoot().getLocale();
        String locale = "en_US";
        Locale newLocale = new Locale(locale);
        if(!currentLocale.equals(newLocale)) 
           context.getViewRoot().setLocale(newLocale);
    }

我的 faces_config.xml 中有以下内容:

<locale-config> <default-locale>en</default-locale> <supported-locale>fr</supported-locale> </locale-config>

该应用程序对更改语言的响应非常好,但我认为从 FacesContext 设置语言环境时,它反映了所有用户的语言环境。

请帮我解决这个问题......

4

1 回答 1

1

给定的代码不会这样做。问题出在其他地方或被误解了。

但是,更常见的做法是将语言环境存储在会话范围的 bean 中并locale使用<f:view>.

<f:view locale="#{user.locale}">
于 2010-04-13T14:21:39.010 回答