我正在开发Spring Boot应用程序(仅限REST控制器)。我的服务器每个请求都包含语言标签。我希望根据此标签以特定语言发送响应。控制器从请求中提取这些标签,并作为Locale实例提供给服务层。我在src/main/resources下创建了属性文件,如下所示:https://istack.dev59.com/fsXPG.webp。
我的问题是默认语言问题。无论提供的Locale如何,从属性文件返回的消息始终来自AppResources_pl.properties。我认为问题在于默认语言环境。目前我尝试了两种不同的方法,但还不知道如何将默认属性文件设置为英语。
第一个方法:
我的问题是默认语言问题。无论提供的Locale如何,从属性文件返回的消息始终来自AppResources_pl.properties。我认为问题在于默认语言环境。目前我尝试了两种不同的方法,但还不知道如何将默认属性文件设置为英语。
第一个方法:
ResourceBundle myResources = ResourceBundle.getBundle("AppResources", currentLocale);
String message = myResources.getString("label.error");
第二:
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.forLanguageTag("en-US"));
return slr;
}
@Bean
public MessageSource messageSource(){
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("AppResources");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
并在服务中:
messageSource.getMessage("label.error", null, locale)
双向返回消息,但始终来自AppResources_pl.properties。当提供的语言环境在*.properties文件中未找到时,如何将AppResources.properties设置为默认属性文件?
MessageSourceAccessor
bean并使用getMessage(String code)
,它将只使用您在此处设置的区域设置,并且不会检查区域设置持有者的区域设置。 - Andrew Lalis