在区域设置 'en_US' 的代码 'email.subject' 下找不到消息
No message found under code 'email.subject' for locale 'en_US'
我有 属性 个不同本地化的资源文件。我像这样设置我的默认语言环境 Locale.forLanguageTag("en")
。
我这样检索 属性:messageSource.getMessage("email.subject", null, Locale.getDefault().stripExtensions());
但是,我的应用程序失败并出现错误 No message found under code 'email.subject' for locale 'en_US'.
我的 属性 文件有后缀 _en
,所以我知道它找不到它 - 但我的问题是:为什么它搜索语言环境 en_US
而不是 en
?
对于其他语言(没有此区域后缀),它工作正常。
I set my default locale like this Locale.forLanguageTag("en").
方法 forLanguageTag
不 设置默认语言环境。 Locale.setDefault(Locale)
可以(仅适用于 JVM 的当前实例)。
我的猜测是您的默认语言环境是 en_US
,虽然它可能 看起来 好像您的代码出于某种原因添加了一个区域,但它实际上并没有设置新的默认语言环境并保留原来的 en_US
.
我设置了一个小测试来说明一下:
public class MessageSourceTest {
@Rule
public ExpectedException expEx = ExpectedException.none();
@Test
public void test() {
expEx.expectMessage("No message found under code 'email.subject' for locale 'en_CA'");
Locale.setDefault(Locale.CANADA);
Locale.forLanguageTag("en");
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:nonexistingResourceBundleButDoesntMatter");
messageSource.getMessage("email.subject", null, Locale.getDefault().stripExtensions());
}
}
异常是指 Locale.setDefault(Locale.CANADA)
设置的语言环境,而不是方法调用 Locale.forLanguageTag("en");
。
我有 属性 个不同本地化的资源文件。我像这样设置我的默认语言环境 Locale.forLanguageTag("en")
。
我这样检索 属性:messageSource.getMessage("email.subject", null, Locale.getDefault().stripExtensions());
但是,我的应用程序失败并出现错误 No message found under code 'email.subject' for locale 'en_US'.
我的 属性 文件有后缀 _en
,所以我知道它找不到它 - 但我的问题是:为什么它搜索语言环境 en_US
而不是 en
?
对于其他语言(没有此区域后缀),它工作正常。
I set my default locale like this Locale.forLanguageTag("en").
方法 forLanguageTag
不 设置默认语言环境。 Locale.setDefault(Locale)
可以(仅适用于 JVM 的当前实例)。
我的猜测是您的默认语言环境是 en_US
,虽然它可能 看起来 好像您的代码出于某种原因添加了一个区域,但它实际上并没有设置新的默认语言环境并保留原来的 en_US
.
我设置了一个小测试来说明一下:
public class MessageSourceTest {
@Rule
public ExpectedException expEx = ExpectedException.none();
@Test
public void test() {
expEx.expectMessage("No message found under code 'email.subject' for locale 'en_CA'");
Locale.setDefault(Locale.CANADA);
Locale.forLanguageTag("en");
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:nonexistingResourceBundleButDoesntMatter");
messageSource.getMessage("email.subject", null, Locale.getDefault().stripExtensions());
}
}
异常是指 Locale.setDefault(Locale.CANADA)
设置的语言环境,而不是方法调用 Locale.forLanguageTag("en");
。