我在/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;
}
答案 0 :(得分:1)
看看#setFallbackToSystemLocale
的{{3}}:
设置在没有文件的情况下是否回退到系统区域设置 已找到特定的语言环境。默认值为“ true”;如果这被转 关闭,唯一的后备将是默认文件(例如 “ messages.properties”为基本名称“ messages”)。
因此,实际上,您可以在这里通过将文件名从_de
更改为mymessage_de.properties
来将“默认”更改为mymessage.properties
。您可以在文档中为此做个注释。
答案 1 :(得分:0)
切换语言环境如何?
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;
}