【发布时间】:2018-01-24 15:03:27
【问题描述】:
我正在使用 Spring Boot 1.5.8、Spring Data REST、Spring HATEOAS。在我启用的暴露 REST 端点的应用程序中:
spring.data.rest.enable-enum-translation=true
这样,当我要求枚举时,它会根据我的语言环境进行翻译。
更多配置内容:
@Bean
public LocaleResolver localeResolver() {
return new SmartLocaleResolver();
}
public class SmartLocaleResolver extends CookieLocaleResolver {
@Override
public Locale resolveLocale(HttpServletRequest request) {
String acceptLanguage = request.getHeader("Accept-Language");
if (acceptLanguage == null || acceptLanguage.trim().isEmpty()) {
return super.determineDefaultLocale(request);
}
return request.getLocale();
}
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:/i18n/messages");
// messageSource.setDefaultEncoding("UTF-8");
// set to true only for debugging
messageSource.setUseCodeAsDefaultMessage(false);
messageSource.setCacheSeconds((int) TimeUnit.HOURS.toSeconds(1));
messageSource.setFallbackToSystemLocale(false);
return messageSource;
}
@Bean
public MessageSourceAccessor messageSourceAccessor() {
return new MessageSourceAccessor(messageSource());
}
如您所见,我还设置了消息源以翻译来自服务器的异常。
我的服务器区域设置是 IT,我有 rest-messages.properties(美国翻译)和 rest-messages_it.properties(IT 翻译)。我的目标是在语言无法识别时使用 rest-messages.properties,在语言为 IT 时使用 rest-messages_it.properties。
现在它不起作用。当没有所选语言的对应文件时,Spring Data REST 读取 rest-messages_it.properties。
我通过使用 messageSource.setFallbackToSystemLocale(false); 的 messages.properties 解决了这个问题。有没有办法对rest-messages 文件做同样的事情?
【问题讨论】:
标签: spring spring-mvc spring-boot spring-data-rest