使用一个非常简单的Spring Rest HelloWorld示例和intelliJ,我试图添加国际化(Locale.US作为默认值,只需一个替代的messages_es.properties即可获得西班牙语版本)。
这是我的Java配置文件:
@Bean
public LocaleResolver localeResolver(){
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(Locale.US);
return localeResolver;
}
@Bean
public ResourceBundleMessageSource messageSource(){
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
接下来我有两个资源文件,每个文件只有一个条目:
messages.properties(默认):
good.morning.message=Good morning
messages_es.properties(默认):
good.morning.message=Buenos días
在Postman中使用"Accept-Language"头参数进行测试,无论我设置什么值,它总是返回西班牙语版本中的单词("Buenos días")。即使设置了"en"、"en_GB"或"en_US"等多种语言,也从未返回默认的英文版。始终是"Buenos días"。
但是,如果我只是将西班牙语更改为法语或其他语言,即将messages_es.properties重命名为messages_fr.properties,它就可以正常工作。它始终返回"Good Morning",除非我在头参数中发送"fr",在这种情况下,它返回"Bonjour"或我在法语版本中设置的任何文本。
有什么想法吗?