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

#java #spring #internationalization

#java #spring #интернационализация

Вопрос:

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

  • Веб
  • Ресурсы Java
  • src/main/ресурсы
  • 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, то как я должен реализовать изменения локали? Как программа узнает, какой файл взять?

Ответ №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

или

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

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

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

Комментарии:

1. Я сомневаюсь, как приложение узнает, какой файл взять. Нужно ли мне передавать какой-то параметр или нужно изменить язык браузера, чтобы увидеть изменения.

2. Это зависит от того, как вы будете вызывать пакет сообщений, который я добавлю в свой пост.

3. Мне важно написать контроллер, чтобы увидеть изменения.

4. Да, но вы также можете вызвать его из представления.