java - 为什么 Spring 加载与指定语言不同的消息?

标签 java spring spring-boot

我创建了一个简单的 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/

相关文章:

java - sun.tools.jmap.JMap.main 无法识别

java - 如何从另一个类打印变量

java - 使用 Mockito 测试 Spring 环境配置文件

正在复制 Spring 应用程序 bean

java - 已解决 - 从 Java Spring 写入 Angular 9 套接字 - 被 CORS 策略阻止

java - 如何对具有多个 boolean 字段的类进行单元测试

java - 如何在java中将字符串中每个单词的第一个和最后一个字母大写

java - @MatrixVariable Spring 3.2 返回 Null

mysql - Int 值在数据库中存储为空字符串,尝试将新值设置为旧值会产生 "cannot convert string to int"问题

java - 在 spring boot 中从依赖项目访问父级的 application.properties