#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. Да, но вы также можете вызвать его из представления.