java - SpringBoot ResourceBundleMessageSource 与外部远程文件
问题描述
我正在尝试设置 MessageSource 以使用外部文件对我的 Spring Boot 应用程序进行内部化。
基本上,我的想法是让本地化文件开箱即用(例如在 AWS S3 或类似的东西上)。
我正在尝试使用此代码:
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource rs = new ResourceBundleMessageSource();
rs.setBasename("http://www.myexternalservice.com/messages");
rs.setUseCodeAsDefaultMessage(true);
return rs;
}
当我尝试检索消息时,我使用它:
String message = messageSource.getMessage("keyname", null, Locale.US);
但是,在这种情况下,我读入了调试控制台:
ResourceBundle [http://www.myexternalservice.com/messages] not found for MessageSource: Can't find bundle for base name http://www.myexternalservice.com/messages, locale en_US
我也尝试了不同的语言环境。
可能吗?
解决方案
我使用此代码示例解决了:
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("http://www.myexternalservice.com/messages");
messageSource.setCacheSeconds(400);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
推荐阅读
- pysftp - Pysftp无法将文件从远程服务器移动到本地
- pandas - PySpark SQL 中用户定义的聚合函数
- puppet - 有没有办法在 Puppet 中显示分配给节点的角色和服务帐户列表?
- progressive-web-apps - 我可以同时拥有 Workbox registerroute 和 service worker fetch 事件处理程序吗?
- java - 如何更新未来地图?
- python-3.x - 受先前调用困境影响的 Python 函数调用
- typescript - 为什么类型保护类型的扩展会导致类型检查被跳过?
- r - 使用嵌套和重复测量预测变量运行 lme
- r - 为什么 R 中的 DGLM 无法识别我的对象?
- jquery - 为什么当我在同一行中编辑另一个单元格时,此数据表单元格会恢复为旧值?