我正在使用Spring Boot 1.5.4和Spring Data REST。我将messages.properties放在resources / i18n文件夹中。在这个文件夹中,我有两个文件:messages.properties和messages_it.properties 我以这种方式配置了我的WebMvcConfigurerAdapter:
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
//messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setCacheSeconds((int) TimeUnit.HOURS.toSeconds(1));
messageSource.setFallbackToSystemLocale(false);
return messageSource;
}
当我必须本地化消息时,我会这样做:
String message = messageSource.getMessage(throwable.getClass().getName(), new Object[] {}, locale);
如果语言的属性文件存在,这可以正常工作,否则我会有例外情况:
Caused by: org.springframework.context.NoSuchMessageException: No message found under code 'org.springframework.dao.InvalidDataAccessApiUsageException' for locale 'fr_CH'.
我的猜测是由于某种原因MessageSource也没有读取messages.properties文件,如果它存在并且它具有与其他文件相同的密钥。
答案 0 :(得分:1)
通常,如果未以错误的方式配置或配置MessageBundle,则会发生此异常。
更改
messageSource.setBasenames( “I18N /消息”);
到
messageSource.setBasenames( “/ I18N /消息”); 或messageSource.setBasenames(“classpath:/ i18n / messages”);
如果i18n是i18n文件的根目录。