gpt4 book ai didi

java - 当默认区域设置为 "en"时,ReloadableResourceBundleMessageSource 无法找到消息

转载 作者:行者123 更新时间:2023-12-03 20:22:07 24 4
gpt4 key购买 nike

为什么 Spring “ReloadableResourceBundleMessageSource”在 Locale.getDefault() 返回 en 时无法找到与代码关联的正确消息,但在返回 en_US 时能够找到正确的消息

默认语言环境:en_US

key: CODE_1, Locale: Locale.US           = Hit
key: CODE_1, Locale: Locale.CANADA = Hit
key: CODE_1, Locale: fr_CA = Hit
key: CODE_1, Locale: null (use default) = Hit

默认语言环境:en

key: CODE_1, Locale: Locale.US               = Hit
key: CODE_1, Locale: Locale.CANADA = CODE_1
key: CODE_1, Locale: fr_CA = CODE_1
key: CODE_1, Locale: null (use default) = CODE_1

我只有一个包在类路径中有 CODE_1,它是 message_en_US.properties

最佳答案

该消息仅为 en_US 语言环境定义,因为它是在 message_en_US.properties 文件中定义的。从区域设置 en_US (Locale.US) 切换到 en 时出现不同行为的原因是 ReloadableResourceBundleMessageSource默认情况下执行 fallback如果在请求的语言环境中找不到消息,则发送到系统语言环境。

在第一种情况下,当 en_US 是默认值时,消息总是会被找到,因为请求的本地是 en_US 或当不是时,消息源确实回退是 en_US,其中定义了消息。

当默认区域设置为 en 时,只有 en_US 查询有效,因为它正在查找正确的属性文件。对于所有其他人,消息未在相应的属性文件中找到,也未在后备语言环境 en 中找到。

关于java - 当默认区域设置为 "en"时,ReloadableResourceBundleMessageSource 无法找到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com