Виджет календаря в JSF-библиотеке PrimeFaces удобен в использовании и вполне себе хорошо работает, но у него есть один почти фатальный недостаток - календарь в нём не локализован, и выбранная в приложении локаль этим виджетом не подхватывается:

Вообще говоря, в этом есть определённая логика - виджет календаря "родом" из JS-библиотеки JQuery UI и может "не видеть" параметры локализации самого PrimeFaces. OK, смотрим описания тегов и видим, что у этого компонента есть аж два атрибута, отвечающих за локализацию - lang и locale. Устанавливаем их в нужные нам значения:
<p:calendar id="someDate" value="#{exampleBean.someDate}"
size="8" showOn="button" lang="ru" locale="ru" />
Проверяем, ничего не изменилось:

Ладно, нам не привыкать. Идём в гугл, находим замечательную страницу в Wiki, где указано, что в комплекте поставки PrimeFaces идёт только английская локаль календаря - остальное надо доставлять руками. Ищем на той же страничке русскую локаль, находим, исправляем явные ошибки (например, "суботу"), получается что-то подобное:
PrimeFaces.locales ['ru'] = {
closeText: 'Закрыть',
prevText: 'Назад',
nextText: 'Вперёд',
currentText: 'Home',
monthNames: ['Январь', 'Февраль' , 'Март' , 'Апрель' , 'Май' , 'Июнь' , 'Июль' , 'Август' , 'Сентябрь','Октябрь','Ноябрь','Декабрь' ],
monthNamesShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек' ],
dayNames: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
dayNamesShort: ['Воск','Пон' , 'Вт' , 'Ср' , 'Четв' , 'Пят' , 'Суб'],
dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
weekHeader: 'Неделя',
FirstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix:'',
timeOnlyTitle: 'Только время',
timeText: 'Время',
hourText: 'Час',
minuteText: 'Минута',
secondText: 'Секунда',
currentText: 'Сегодня',
ampm: false,
month: 'Месяц',
week: 'неделя',
day: 'День',
allDayText: 'Весь день'
};
Добавляем это куда-нибудь в подключаемые JS-файлы нашего приложения (например, под Liferay мне проще добавить это в файлы темы оформления). Атрибут "lang" у компонента можно убрать, нам нужен только атрибут "locale". Пересобираем всё, развёртываем и радуемся:

Ура, теперь всё заработало!