首页 > 解决方案 > Spring Boot、Thymeleaf 电子邮件模板国际化

问题描述

我正在尝试根据用户首选语言更改电子邮件模板的语言(首选语言的 ID 存储在用户表中)。在准备消息时,我将语言环境传递给上下文,如下所示:

Locale locale = new Locale(user.getLanguage().getLocaleCode());
final Context ctx = new Context(locale);
ctx.setVariable("username", user.getUsername());
ctx.setVariable("address", user.getAddress());

当我记录它的结果时,getLocaleCode()它返回预期值,例如'sr'。在我的 /resources/lang 文件夹中,我创建了 messages_sr.properties 文件。但是由于某种原因,当我发送电子邮件时,它将始终使用默认 messages.properties 中的语言。这是我的配置文件:

@Configuration
public class LocaleConfig {

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.US);
        return slr;
    }
    
    @Bean(name = "messageSource")
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:lang/messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
}

在资源/语言文件夹中,我有:

根据我能够找到的文档和示例,我找不到解决方案。有人可以帮忙吗?

谢谢。

标签: javaspring-bootthymeleaf

解决方案


https://stackoverflow.com/a/11152674/3849555启发,请classpath*:lang/messages改用。


推荐阅读