Spring\'s ResourceBundleMessageSource uses MessageFormat for replacing placeholders ({0}) inside messages.
MessageFormat
ResourceBundleMessageSource provides a flag called alwaysUseMessageFormat that can be used if MessageFormat should be applied to all messages.
Configure one time for all your resource boundle with:
<bean
id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="alwaysUseMessageFormat" value="true" />
...
</bean>
and your translator have to be aware of a single rule in writing and maintaining resource bundle:
'')See also Why Spring MessageSource arguments are not filled correctly in some locales.