Проблема интернационализации и локализации - PullRequest
1 голос
/ 13 апреля 2010

Мое приложение поддерживает интернационализацию и локализацию, каждый пользователь может выбрать свой предпочтительный язык, и приложение отлично отразит его. проблема заключается в том, что первый пользователь выбирает английский, а второй выбирает французский - пакет ресурсов для первого пользователя будет считываться с французского ресурса после обновления его страницы.

Я использую следующий код для переключения между двумя языками:

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);
    }

В моем Face_config.xml есть следующее:

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

приложение очень хорошо реагирует на изменение языков, но я думаю, что при настройке локали из FacesContext оно отражает все локали пользователей.

Пожалуйста, помогите мне в этом ....

1 Ответ

1 голос
/ 13 апреля 2010

Данный код не делает этого.Проблема заключается в другом месте или была неверно истолкована.

Тем не менее, более распространенной практикой является сохранение локали в bean-объекте области действия и использование атрибута locale <f:view>.

<f:view locale="#{user.locale}">
...