如何在ResourceBundleMessageSource中设置默认语言环境?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ResourceBundleMessageSource中设置默认语言环境?相关的知识,希望对你有一定的参考价值。
我在/resources
有两个语言文件:
mymessage_de.properties
mymessage_en.properties
我想创建一个消息包,默认情况下,如果无法解析该包,则应该回退到_de
。但是在英语机器上,捆绑包总是回到系统默认状态。这是_en
。
我可以通过设置bundle.setFallbackToSystemLocale(false)
来禁用它,这将导致空消息。
问题:如何设置要使用的默认语言环境?
@Bean
public MessageSource messageBundleBlank() {
ResourceBundleMessageSource bundle = new ResourceBundleMessageSource();
bundle.setBasenames("mymessage");
bundle.setDefaultEncoding(StandardCharsets.UTF_8.name());
bundle.setFallbackToSystemLocale(false);
//TODO how can I set a fallback to 'messages_de.properties'?
return bundle;
}
答案
看看documentation的#setFallbackToSystemLocale
:
设置是否在找不到特定区域设置的文件时是否回退到系统区域设置。默认为“true”;如果关闭此选项,则唯一的回退将是默认文件(例如,对于basename“messages”的“messages.properties”)。
所以,你真的可以做的是通过将文件名从_de
更改为mymessage_de.properties
来将“默认”更改为mymessage.properties
。您可以在文档中记下相应的效果。
另一答案
切换区域设置怎么样?
public MessageSource messageBundleBlank() {
boolean localeSwitched=false;
if (Locale.getDefault().getLanguage().equalsIgnoreCase("en")) {
Locale.setDefault(Locale.GERMAN);
localeSwitched=true;
}
ResourceBundleMessageSource bundle = new ResourceBundleMessageSource();
bundle.setBasenames("mymessage");
bundle.setDefaultEncoding(StandardCharsets.UTF_8.name());
if(localeSwitched) {
Locale.setDefault(Locale.ENGLISH);
}
return bundle;
}
以上是关于如何在ResourceBundleMessageSource中设置默认语言环境?的主要内容,如果未能解决你的问题,请参考以下文章
如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?