Афоризм
Женат два раза; неудачно.
Одна ушла, вторая нет.
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Локализация приложения

Локализация интерфейса JSF касается как интерфейса, так и собственных сообщений и сообщений валидаторов. В разделе "Основы Java" вопросу локализации интерфейса и подготовки ресурсных файлов посвящена отдельная страница.

Локализация сообщений валидатора

Сообщения валидатора для различных локалей (locale) располагаются в ресурсных файлах Messages_xx.properties (javax.faces-xxx.jar). К сожалению в JSF отсутствует ресурсный файл Messages_ru.properties с русским языком.

Собственные ресурсные файлы можно создать на основе Messages.properties, используемого по умолчанию, в который включить локализованные сообщения, и добавить его в архивный файл javax.faces-xxx. Но правильнее, конечно, научиться подключать собственный ресурсный файл к приложению. Чем мы и займемся в данной статье.

Для подключения ресурсного файла локализации сообщений валидатора необходимо в файле конфигурации faces-config.xml добавить следующие строки кода :

<application>
    <message-bundle>common.i10n.Messages</message-bundle>

    <locale-config>
        <default-locale>ru_RU</default-locale>
        <supported-locale>en_US</supported-locale>
    </locale-config>
	
</application>

В данном файле конфигурации к приложению подключаются ресурсные файлы (common.i10n.Messages.properties, common.i10n.Messages_en.properties, common.i10n.Messages_ru.properties). Наименование ресурсных файлов может быть другим.

В тегах <locale-config> определяются поддерживаемая и используемая по умолчанию локаль. Можно сократить наименование locale, т.е. не указывать страну ru, en.

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

FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ru"));

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

Локализация интерфейса - f:view, f:loadBundle

Для локализации интерфейса страниц также, как и для сообщений валидаторов, необходимо создать ресурсные файлы и загрузить их в приложение. Для загрузки ресурсного файла и определения переменной, через которую можно обращаться к свойства файла, необходимо использовать тег <f:loadBundle> :

<f:loadBundle basename="common.i10n.resources" var="resources"/>

Определение же локали выполняется в теге <f:view> :

<f:view locale="#{configManager.locale}">
    <f:loadBundle basename="common.i10n.resources" var="resources" />
    <h:outputText value="#{resources.['text.login']}" />
    <h:commandButton value="#{resources.button}" />
</f:view>

Определенную locale можно указать и следующим образом

<f:view locale="ru">
 ...
</f:view>

Локализация в настройках приложения, resource-bundle

В представленным выше коде через тег <f:loadBundle> ресурсный файл загружается для отдельной страницы. Но можно определить ресурсный файл и в настройках приложения faces-config.xml :

<application>
    <resource-bundle>
        <base-name>common.i10n.resources</base-name>
        <var>resources</var>
    </resource-bundle>
</application>

При обращении к ресурсному файлу необходимо использовать его alias, определенный в теге <var>

<h:outputText value="#{resources.['text.login']}" />
<h:commandButton value="#{resources.buttonAdd}" action="#{registrationBean.addUser}" />
  Рейтинг@Mail.ru