我创建了一个简单的 Spring Boot 应用程序,用于将消息打印到 stdout。这是主类:
@SpringBootApplication
public class I18nTestApplication {
public static void main(String[] args) {
final ApplicationContext ctx = SpringApplication.run(I18nTestApplication.class, args);
final Locale locale = Locale.US;
System.out.println(ctx.getMessage("test", null, locale));
}
}
资源文件夹包含两个消息文件:
messages.properties:
test=This is English
messages_de.properties:
test=Das ist Deutsch
预期的程序输出是:This is English
,但它始终打印 Das ist Deutsch
作为输出。即使我设置了任何区域设置,程序也始终将德语消息打印为输出。这里发生了什么?我是不是搞错了?
最佳答案
根据您的姓名和您在个人资料页面中的位置,我假设您的系统区域设置是德语。
用于查找适当资源包的算法基本上包含在
- 查找所请求区域设置的包
- 如果未找到,则退回到系统区域设置的 bundle
- 如果仍未找到,则退回到默认 bundle
更多信息请参见 the documentation .
提供一个名为 messages_en.properties 的文件(即使是空的:然后将在父包中查找键),这将按预期工作。
关于java - 为什么 Spring 加载与指定语言不同的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045660/