[英]How to set default locale in 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;
}
查看#setFallbackToSystemLocale
的文檔 :
設置是否在沒有找到特定語言環境的文件的情況下是否回退到系統語言環境。 默認值為“ true”; 如果關閉此選項,則唯一的后備選項將是默認文件(例如,基本名稱“ messages”的“ messages.properties”)。
因此,實際上,您可以在這里通過將文件名從mymessage_de.properties
更改為_de
來將“默認”更改為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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.