1

私のアプリケーションは国際化とローカリゼーションをサポートしています。各ユーザーは自分の好みの言語を選択でき、アプリケーションはそれを完全に反映します。問題は、最初のユーザーが英語を選択し、2番目のユーザーがフランス語を選択した場合、最初のユーザーのリソースバンドルは、ページを更新した後にフランス語のリソースから読み取ります。

次のコードを使用して、2つの言語を切り替えています。

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 に答える