2010-04-13 100 views
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设置语言环境时,它反映了所有用户的语言环境。

请帮我这个....

回答

1

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

但是,更常见的做法是将区域设置存储在会话范围的bean中,并使用属性<f:view>

+0

thx为您的答复,实际上我确实保存用户bean(会话范围的bean)中的区域设置。我会尝试在模板中放置,看看会发生什么。 – Ahmad 2010-04-13 14:36:48

+0

非常感谢BalusC现在工作正常:) – Ahmad 2010-04-13 14:56:05

+0

不客气。 – BalusC 2010-04-13 14:57:59