Скорость ( http://velocity.apache.org ), FreeMarker ( https://freemarker.apache.org/ )
Не упускайте возможности StringTemplate , вероятно, это наиболее четкое разделение проблем данных и шаблонов, и оно очень надежно.
Класс Java MessageFormat позволяет выполнять полуусложненную замену текста с поддержкой локализации и форматирования чисел, даты и времени. А для множественного числа вы можете даже использовать java.text.ChoiceFormat с MessageFormat. Этого может хватить для всех ваших потребностей в замене текста.
Если нет, вы можете взглянуть на Apache Velocity ( http://velocity.apache.org/ ) или Freemarker ( http://freemarker.sourceforge.net/ )