我正在通过Udemy课程学习Spring。我已经到了国际化的地步,这对我和我现在的工作都很有用。在像课程一样配置了代码之后,当我请求localhost:8080/hello_world_international时,我会得到以下JSON作为响应:
{
"timestamp": "2018-10-03T14:27:27.765+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No message found under code 'good.morning.message' for locale 'en'.",
"path": "/hello_world_internationalized"
}
这是配置的代码:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(Locale.US);
return localeResolver;
}
@Bean
public MessageSource bundleMessageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("app_messages");
return messageSource;
}
}
和
public class HelloWorldController {
@Autowired
private MessageSource messageSource;
@GetMapping(path = "/hello_world_internationalized")
public String helloWorldInternationalized() {
return messageSource.getMessage("good.morning.message", null, LocaleContextHolder.getLocale());
}
}
我在互联网上搜索了一下,发现了一些关于a<bean>标记,该标记包含国际化工作的配置。
但是我不知道该把这个配置标签放在哪里。当我试图创建一个Rest服务时,我使用web、Rest服务和开发工具作为我的项目的依赖。我也在使用HAEOAS。我还注意到,我没有WEB-INF文件夹和WEB.xml文件,它们通常是配置这些东西所必需的。在哪里可以创建这些文件夹和文件?
确保您在资源路径(src/main/resources)中创建了app_messages_en.properties(en语言环境的文件)和app_messages.properties
good.morning.message=value of this key
将被本地化的值的键在每个文件中都必须相同,其值与它们所对应的语言相适应。
这看起来像是服务器缓存问题,无法读取属性文件。(但不确定)
我通过在application.properties文件中启用DEBUG并重新启动服务器解决了这个问题。logging.level.org.springframework=调试
它开始挑选变化。