我的应用程序支持国际化和本地化,每个用户都可以选择他的偏好语言,应用程序将完美地反映出来。问题是当第一个用户选择英语而第二个用户选择法语时,第一个用户的资源包将在刷新页面后从法语资源中读取。
我使用以下代码在两种语言之间进行更改:
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设置区域设置时它反映了所有用户区域设置。
请帮助我......
答案 0 :(得分:1)
给定的代码不会这样做。问题出在其他地方或被误解了。
但是,更常见的做法是将区域设置存储在会话范围的bean中,并使用locale
的{{1}}属性。
<f:view>