You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MessageSource与Thymeleaf使用Locale不一致的问题求助

MessageSource与Thymeleaf使用Locale不一致的问题求助

嗨,各位大佬,我最近碰到了一个Spring Boot国际化的问题,折腾了好久都没搞定,想请教下大家!

我在项目里配置了基于会话属性的Locale解析,代码如下:

@SpringBootApplication
@ServletComponentScan
@Configuration
public class Webapp {

    // Thymeleaf
    @Bean
    public LayoutDialect layoutDialect() {
        return new LayoutDialect();
    }

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setLocaleAttributeName("user_locale"); // Not strictly needed
        localeResolver.setDefaultLocale(Locale.ENGLISH);
        return localeResolver;
    }

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

    public static void main(String[] args) {
        SpringApplication.run(Webapp.class, args);
    }
}

现在的情况是,Thymeleaf模板里用#{...}语法的时候完全没问题——能根据session里设置的语言(比如XX),正确从对应的messages_XX.properties文件里读取翻译内容。但是当我直接调用messageSource.getMessage(text, null, null)方法时,不管session里的Locale是什么,总是返回英文的内容。

我现在完全摸不着头脑,不知道该从哪里开始调试,有没有大佬能帮我分析下问题出在哪,或者给点调试的方向呀?

备注:内容来源于stack exchange,提问作者qarabala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:42:57