Интернационализация с использованием SPRING MVC

Ниже приведена структура проекта, показывающая, где я храню файлы сообщений:

  • Интернет
  • Java-ресурсы
  • источник/основной/ресурсы
  • messages_en.properties
  • messages_fr.properties

Файл конфигурации компонента, в котором я определяю источник сообщения, выглядит так, как показано ниже:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages_fr</value>
</list>
</property>
</bean>

Я новичок в этой концепции интернационализации. Так что мало что знаю, кроме того, что если вы поместите свой файл .properies внутрь тега, он будет выбран, и изменения будут отражены. Но я столкнулся с проблемой при работе с несколькими файлами .properties. Скажем, если у меня есть более одного файла .properties, как мне реализовать изменения локали? Как программа узнает, какой файл брать?


person user3767064    schedule 27.06.2014    source источник


Ответы (1)


Вы должны использовать:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
    <list>
        <value>messages</value>
    </list>
    </property>
</bean>enter code here

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

Примечание. Я думаю, что вы должны назвать свой файл: messages_fr_FR.properties или messages_en_EN.properties.

Редактировать :

Вы можете указать локальный, используя:

messageSource.getMessage("messageKey", args, Locale.FRANCE);

использовать messages_fr_FR

or

messageSource.getMessage("messageKey", args,LocaleContextHolder.getLocale());

использовать локальный, выбранный пользователем.

Я надеюсь, что это может помочь вам

person Tony    schedule 27.06.2014
comment
Я сомневаюсь, как приложение узнает, какой файл брать. Мне нужно передать какой-то параметр или нужно изменить язык браузера, чтобы увидеть изменения. - person user3767064; 27.06.2014
comment
Это зависит от того, как вы будете называть пакет сообщений, я добавлю пример в свой пост. - person Tony; 27.06.2014
comment
Мне важно написать контроллер, чтобы увидеть изменения. - person user3767064; 30.06.2014
comment
Да, но вы также можете вызвать его из представления. - person Tony; 01.07.2014