目前我正在使用 Spring-boot + Thymeleaf 和多种语言。我找不到任何简单的方法来使用 ICU4j。本质上,据我所知,所需要的只是 用 ICU4J 变体替换ResourceBundleMessageSource
它。MessageFormat
但我不能让它一起工作。
也许有一些此类项目的示例或 Spring 中的任何其他多元化功能示例(例如this)。
使用典型的 Spring Boot 2 + Thymeleaf 项目,可以通过这个项目和以下配置来实现:
@Configuration
public class YourConfigFile ...
@Bean
public ICUMessageSource messageSource() {
ICUReloadableResourceBundleMessageSource messageSource = new ICUReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages/messages");
messageSource.setCacheSeconds(3600);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
您还需要从 maven 添加 ICU4J 依赖项。
在你的messages.properties(在我的例子中是messages_ru.properties):
plural={0} {0, plural, one{пользователь}few{пользователя}other{пользователей}}
使用:
<span th:text="#{plural(0)}"></span>
<span th:text="#{plural(1)}"></span>
<span th:text="#{plural(2)}"></span>
<span th:text="#{plural(10)}"></span>
如果您在查找 messages.properties 时遇到问题??plural_ru??
,请检查这些文件的位置和名称
messageSource.setBasename("classpath:messages/messages")
。