簡體   English   中英

如何在ResourceBundleMessageSource中設置默認語言環境?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM