ip6*_*696 2 java localization properties spring-boot
我有调度程序。每 5 秒我从数据库获取一些项目并将推送通知发送到 android。但是此通知中的文本为俄语。在功能上,我们支持不同的语言,现在我尝试创建一些模板。我有消息模板的属性文件:messages_ru_RU.properties我在这个文件中有字符串: notification.message=%s. ?? ?????: %s. ?????: %s
我需要从属性加载这个字符串并重新修改%s我的值。现在我创建配置服务:
@Configuration
public class LocaleConfig {
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
Locale defaultLocale = new Locale("ru");
slr.setDefaultLocale(defaultLocale);
return slr;
}
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setCacheSeconds(3600); //refresh cache once per hour
return messageSource;
}
}
Run Code Online (Sandbox Code Playgroud)
和服务:
@Component
public class MessageByLocaleServiceDefault implements MessageByLocaleService {
private final MessageSource messageSource;
@Autowired
public MessageByLocaleServiceDefault(MessageSource messageSource) {
this.messageSource = messageSource;
}
@Override
public String getMessage(String id) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(id, null, locale);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试从这样的属性加载字符串:
String messagePlaceholder = messageByLocaleService.getMessage("notification.message");
Run Code Online (Sandbox Code Playgroud)
但我看到这个:
我的问题 - 如何在 spring boot 中从 message.properties 加载俄语(西里尔文,utf-8)文本?
我的属性文件以 utf-8 编码保存。
确保还MessageSource通过配置setDefaultEncoding()属性正确设置编码:
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setCacheSeconds(3600);
messageSource.setDefaultEncoding("UTF-8"); // Add this
return messageSource;
}
Run Code Online (Sandbox Code Playgroud)
根据 API 文档,默认值为 ISO-8859-1:
默认为无,使用
java.util.Properties默认编码:ISO-8859-1。
另外,请注意,SessionLocaleResolver仅适用于用户会话。如果您打算将MessageSource与计划任务结合使用,它将无法正常工作。
| 归档时间: |
|
| 查看次数: |
2199 次 |
| 最近记录: |