spring boot项目中的多元化问题

时间:2018-06-15 12:17:23

标签: java spring internationalization pluralize icu4j

目前我使用的是Spring-boot + Thymeleaf和多种语言。我找不到任何简单的方法来使用ICU4j。基本上,正如我所知,所有需要的是用ICU4J变体替换ResourceBundleMessageSource及其MessageFormat。但我不能让它一起工作。

也许在Spring中有一些这样的项目或任何其他复数功能的例子(例如this)。

1 个答案:

答案 0 :(得分:0)

使用典型的Spring Boot 2 + Thymeleaf项目,可以使用this project和以下配置实现:

@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")