C'est ma déclaration de messageResource
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- Auto-detect controllers in this package -->
<context:component-scan base-package="levelup.world.web" />
<!-- Prepend /WEB-INF/jsp/ and append .jsp to the view name -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- Access resource bundles with the specified basename -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
p:basename="/WEB-INF/messages/" />
</beans>
Lorsque j'exécute mon application, cette erreur s'affiche
No message found under code 'country.plural' for locale 'fil_PH'
maintenant dans mon dossier de messages à l'intérieur de web-inf, j'ai les propriétés de message suivantes
messages_en.properties
messages_fr.properties
messages.properties
Qu'est-ce que j'oublie ici?
En général, ce problème n'apparaît pas pour des paramètres régionaux inexistants, mais parce que MessageBundle
est configuré de manière incorrecte. Dans votre cas, vous semblez avoir besoin de supprimer "/" dans votre nom de base.
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
p:basename="/WEB-INF/messages" />
Pourquoi c'est ainsi:
Si vous avez messages.properties
et messages_en.properties
bundle, le nom du paquet est alors messages
. Si vous les avez dans le dossier WEB-INF
, le nom de base est /WEB-INF/messages
, c’est-à-dire selon/path/to/bundle/bundlename
. Si vous avez messages.properties
dans le dossier /WEB-INF/messages
, le nom de base correspondant est /WEB-INF/messages/messages
.
Pour les bottes de printemps, vous avez besoin de quelque chose comme ceci:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("/WEB-INF/classes/messages");
return messageSource;
}
Vous pouvez également spécifier dans Spring boot application.properties
# INTERNATIONALIZATION
spring.messages.basename=i18n/messages
spring.messages.encoding=UTF-8