代码之家  ›  专栏  ›  技术社区  ›  Chloe

为什么我需要Spring启动的“messages.properties”而不仅仅是“messages\u en.properties”?

  •  1
  • Chloe  · 技术社区  · 7 年前

    我在跟踪 this guide messages.properties . 为什么我不能给它命名 messages_en.properties

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.ENGLISH);
        return slr;
    }
    

    这不起作用(每次都必须硬停止并重新启动服务器) message.properties default <spring:message code="oops" text="default"/> 因为它找不到 消息属性 .

    事实上,当我将浏览器默认语言设置为法语时 messages_fr.properties ,并重新启动服务器,它也无法找到法语的密钥。

    不使用Thymeleaf。无需允许用户选择语言。

    参考: https://docs.spring.io/spring-boot/docs/1.5.17.RELEASE/reference/htmlsingle/ (世界上只有一个“国际化”实例,并且只涉及应用程序属性)。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Chloe    7 年前

    AcceptHeaderLocaleResolver 相反

    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver ahlr = new AcceptHeaderLocaleResolver();
        ahlr.setDefaultLocale(Locale.ENGLISH);
        return ahlr;
    }
    

    LocaleResolver接口具有基于会话、Cookie、Accept Language标头或固定值确定当前语言环境的实现。

    我通过设置此选项修复了实时重新加载问题 application property ,至少用于调试:

    spring.messages.cache-seconds=1
    

    我还设置了这个属性,以免弄乱我的 src/main/resources 文件夹,以便我可以将所有邮件文件移动到 locales/

    spring.messages.basename=locales/messages