java - 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;
}
}
在资源/语言文件夹中,我有:
- messages_en_US.properties
- messages_sr.properties
根据我能够找到的文档和示例,我找不到解决方案。有人可以帮忙吗?
谢谢。
解决方案
受https://stackoverflow.com/a/11152674/3849555启发,请classpath*:lang/messages
改用。
推荐阅读
- android - 如何在 PagerAdapter 的方法(instanceiteItem)中更改全局位置值
- xml - 删除包含 X 的根节点
- android - Android约束布局尺寸比不适用于包装内容
- regex - 提取文本而不使用正则表达式提取网址?
- mysql - 没有实体框架的 MVC
- c# - 如何在不复制数据的情况下将数据保存到 xml 文件
- java - 如何在 64 位 Windows 上安装 Java 1.1
- python - 获取列表中所有非唯一元素
- checker-framework - 我可以为我的整数参数设置一个范围吗
- r - Microsoft Azure 实例上的 RStudio 服务器