【问题标题】:How to set default locale in ResourceBundleMessageSource?如何在 ResourceBundleMessageSource 中设置默认语言环境?
【发布时间】:2018-09-06 15:17:32
【问题描述】:

我在/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;
    }

【问题讨论】:

    标签: java spring spring-boot internationalization


    【解决方案1】:

    看看documentation#setFallbackToSystemLocale

    设置如果没有文件时是否回退到系统区域设置 已找到特定的语言环境。默认为“真”;如果这是转 关闭,唯一的后备将是默认文件(例如 "messages.properties" 用于基本名称 "messages")。

    因此,您实际上可以在这里做的是通过将文件名从 mymessage_de.properties 更改为 mymessage.properties 来将“默认”更改为 _de。您可以在您的文档中对此进行说明。

    【讨论】:

    • 你能找到答案吗?
    【解决方案2】:

    切换语言环境怎么样?

    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;
        } 
    

    【讨论】:

    • 切换全局语言环境会对应用程序本身产生广泛影响,例如日期时间格式、货币格式等。因此我宁愿坚持使用默认语言环境。只是默认的消息包不应该是 en...
    • 这就是为什么我在返回之前将其切换回但是同意在方法调用期间可能会影响其他应用程序功能。
    猜你喜欢
    • 2016-09-07
    • 2014-09-14
    • 2012-02-07
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多