【问题标题】:How to get values from message bundle?如何从消息包中获取值?
【发布时间】:2016-04-10 20:59:09
【问题描述】:

在我的应用程序配置类中,我有以下条目:

    @Bean(name = "messageSource")
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("/i18n/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

    @Bean
    public LocaleResolver localeResolver(){
        SessionLocaleResolver resolver = new SessionLocaleResolver();
        resolver.setDefaultLocale(new Locale("pt_BR"));
        return resolver;
    } 

message_pt_BR.properties根据附图定位。

我正在尝试使用 <span th:text="#{app.name}"></span> 文件访问此条目,我得到的只是:

??app.name_pt_br??

我在这里错过了什么?

【问题讨论】:

    标签: spring thymeleaf resourcebundle


    【解决方案1】:

    您的消息包名称应为

    messages_pt_BR.properties
    

    区分大小写。

    没有默认消息包(messages.properties)也没关系。我的工作正常,只有 _en 和 _zh_TW。

    如果您提供正确的路径来设置基本名称,则可以将资源包放在任何地方。

    【讨论】:

    • 感谢您的意见,Blithe!所以,对于我发布的图片上的场景,messageSource.setBasename("/i18n/messages"); 应该没问题吧?
    • 如果还是不行,也许你应该先尝试来缩小问题的原因。记得添加taglib。
    • 好吧,它没有用。不过谢谢!现在我将尝试使用标签库方法。
    【解决方案2】:

    您需要将 messages 捆绑包替换为 /resources 文件夹。
    您还需要添加messages.properties 捆绑包,这是必需的。

    【讨论】:

    • 是的,尝试添加到/i18n/messages.properties
    • 即使这样指定,应用程序也不会“看到”文件并且显示的结果是相同的
    • aha,我看到你把它添加到/webapp 包,尝试将它替换到/resources 文件夹。
    • 正确的基本名称应该是/resources/messages.properties?
    • 不,basename 必须和现在一样。只需将 messages* 文件替换为 /resources/i18n/ 文件夹即可。我在我的项目中尝试过 - 它有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2019-11-07
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多