Как отобразить сообщение в другой локали - PullRequest
2 голосов
/ 30 августа 2010

У нас есть требование показывать только одну страницу в другом месте. (Например, на определенной странице, если тема обсуждения связана с английским языком, мы получаем сообщения из messages_en.properties, но если тема обсуждения на французском или немецком языке, мы должны показать сообщения на соответствующем языке.

Как изменить следующий вызов bean-компонента для использования в качестве параметра на странице xhtml #{messages['label.hello']}.

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

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

На стороне сервера просто сделайте это

private @In LocaleSelector localeSelector;

И настройте его следующим образом

localeSelector.setLanguage("en");
localeSelector.setCountry("US");
2 голосов
/ 30 августа 2010

Хочу отметить, что JSF также читает предпочитаемый язык в вашем браузере и отображает его, если этот язык поддерживается вашим приложением.

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

В faces-config.xml

 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  <locale-config>
     <default-locale>en</default-locale>
     <supported-locale>se</supported-locale>
     <supported-locale>dk</supported-locale>
     <supported-locale>no</supported-locale>
     <supported-locale>it</supported-locale>
     <!-- etc -->
  </locale-config>

...