Афоризм
Украсьте мир отсутствием своим.
Наталья Резник
Последние статьи

 • Сервисы в Android
Неявное Intent отправки Email.
апрель 2019
 • Сервисы в Android
Описание и пример создания Android сервиса.
апрель 2019
 • Вызов AlarmClock
Неявное Intent для вызова AlarmClock.
март 2019
 • Намерения Intent
Описание Intent, фильтры объектов Intent.
март 2019
 • Пример 2-х Activity
Жизненные циклы 2-х Activity android положения.
март 2019
 • Описание Activity
Жизненный цикл Activity android положения.
февраль 2019
 • Отладка приложения
Logcat для просмотра сообщений, настройка BuildConfig.
февраль 2019
 • Настройка ListView
Настройка интерфейса прокручиваемого списка ListView.
февраль 2019
 • Фоновое изображение
Адаптация изображения при смене положения android.
январь 2019
 • Cписок ListView
Прокручиваемый список ListView в android.
январь 2019

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

Локализация интерфейса 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