У меня проблема с настройкой Spring MessageSource, чтобы игнорировать мой системный язык. Когда я вызываю getMessage с нулевым параметром locale, я хочу, чтобы мой MessageSource выбирал файл свойств свойства default.properties. Вместо этого он выбирает messages_en.properties. Когда я меняю имя этого файла свойств на messages_fr.properties, тогда выбирается файл свойств по умолчанию. Моя локаль системы - «en». Похоже, что MessageSource игнорирует свойство fallbackToSystemLocale, которое я установил в false.Spring MessageSource, похоже, игнорирует свойство fallbackToSystemLocale
Такое же поведение относится к Spring версии 4.1.4, а также к 4.1.5. Конфигурация
MessageSource:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="fallbackToSystemLocale" value="false"></property>
<property name="basenames">
<list>
<value>locale/messages</value>
</list>
</property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
Получение сообщения:
String message = messageSource.getMessage("user.email.notFound", new Object[] {email}, null);
Спасибо за любые советы!
Спасибо за хороший ответ. Вы не считаете это поведение нелогичным? Я ожидал бы использовать файл свойств сообщения по умолчанию в случае, если указан нулевой языковой стандарт. Если бы я хотел использовать системный локальный, я бы сделал что-то вроде 'messageSource.getMessage (« ключ », locale == null? Locale.getDefault(): locale);'. т. е. Wicket framework решает эту проблему, когда я пишу, и мне кажется лучше. Я, вероятно, расширю класс 'ResourceBundleMessageSource' и переопределяю' getMessageInternal', чтобы отразить мои потребности. Если он не объявлен окончательным, конечно :) –