2011-01-13 12 views
1

thatチュートリアルのような国際化を実装しました!JSF:国際化に関するリソースバンドルの問題

私のアプリで言語を変更するとき。できます。しかし、次の要求が発生するまでのみ。そして、言語設定が私の標準言語-.-

にリセットされ、私はここで何をしないのです:

LanguageBean.java

@ManagedBean(name="language") 
@SessionScoped 
public class LanguageBean implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    private String localeCode; 

    private static Map<String,Object> countries; 
    static{ 
     countries = new LinkedHashMap<String,Object>(); 
     countries.put("Deutsch", Locale.GERMAN); //label, value 
     countries.put("English", Locale.ENGLISH); 

    } 

    public Map<String, Object> getCountriesInMap() { 
     return countries; 
    } 

    public String getLocaleCode() { 
     return localeCode; 
    } 


    public void setLocaleCode(String localeCode) { 
     this.localeCode = localeCode; 
    } 

    //value change event listener 
    public void countryLocaleCodeChanged(ValueChangeEvent e){ 

     String newLocaleValue = e.getNewValue().toString(); 

       //loop country map to compare the locale code 
       for (Map.Entry<String, Object> entry : countries.entrySet()) { 

       if(entry.getValue().toString().equals(newLocaleValue)){ 

       FacesContext.getCurrentInstance() 
        .getViewRoot().setLocale((Locale)entry.getValue()); 

       } 
     } 
    } 

} 

my facelets template:

   <h:selectOneMenu value="#{language.localeCode}" onchange="submit()" 
      valueChangeListener="#{language.countryLocaleCodeChanged}"> 
      <f:selectItems value="#{language.countriesInMap}" /> 
     </h:selectOneMenu> 

faces-config:

<application> 
      <locale-config> 
       <default-locale>de</default-locale> 
      </locale-config> 
     <resource-bundle> 
     <base-name>org.dhbw.stg.wwi2008c.mopro.ui.text</base-name> 
     <var>msg</var> 
     </resource-bundle> 
    </application> 

答えて

4

setLocaleCode()に次の行を追加します。

FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale(localeCode)); 

また、私が書いたthis tutorialも参照してください。

+0

あなたのチュートリアルは非常に優れていて実装が少し楽ですが、私にとってはうまくいきません:-(私はあなたのチュートリアルと全く同じ方法で行いました。自分自身に説明することはできません – Sven

+0

たぶん、古いチュートリアルのノイズが残っているか、例えば 'BUNDLE_NAME'の定数が無効になってしまったサンプルパッケージ/クラス名を変更しました。何も変更せずにチュートリアルに従えば、動作するはずです。 – BalusC