Java 为什么Spring为不同于指定语言的语言加载消息?

Java 为什么Spring为不同于指定语言的语言加载消息?,java,spring,spring-boot,Java,Spring,Spring Boot,我创建了一个简单的Spring引导应用程序,它将消息打印到stdout。这是主要课程: @SpringBootApplication public class I18nTestApplication { public static void main(String[] args) { final ApplicationContext ctx = SpringApplication.run(I18nTestApplication.class, args);

我创建了一个简单的Spring引导应用程序,它将消息打印到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));
    }

}
resources文件夹包含两个消息文件:

消息。属性:

test=This is English
test=Das ist Deutsch
消息属性:

test=This is English
test=Das ist Deutsch

预期的程序输出是:
这是英文的
,但它总是以输出的形式打印
Das ist Deutsch
。即使我设置了任何语言环境,程序也总是将德语消息打印为输出。这是怎么回事?我搞错了吗?

鉴于您的姓名和您在个人资料页面中的位置,我假设您的系统区域设置是德语

用于查找适当资源束的算法基本上包括

  • 正在为请求的区域设置查找捆绑包
  • 如果找不到系统区域设置,请回退到捆绑包
  • 如果仍然找不到,则返回默认捆绑包
更多信息请参阅


提供一个名为messages_en.properties的文件(即使是空的:将在父捆绑包中查找密钥),该文件将按预期工作。

尝试将
message.properties
重命名为
message_en.properties
,然后查看它是否工作。我知道该文件必须重命名为message_en.properties,但这个答案解释了原因+谢谢你的解释。在加载
ApplicationContext
之前,我使用
locale::setDefaulLocale()
将默认区域设置更改为
locale.US
,现在我获得了预期的输出。