Spring's ResourceBundleMessageSource
uses MessageFormat
for replacing placeholders ({0}
) inside messages.
MessageFormat
requires that single quotes ('
) are escaped using two single quotes (''
) (see: MessageFormat Javadoc). However, by default messages that does not contain any arguments will not be parsed by MessageFormat
, so single quotes in messages without arguments don't need to be escaped.
So your translator have to be aware of two rules in writing and maintaining resource bundle:
- write (
''
) if the message with the single quotes contains at least one placeholders ({0}
) too; - write (
'
) if the message with the single quotes contains none placeholders.
Is there a single rule to cope with single quotes in writing Spring Resource Boundle?
ResourceBundleMessageSource
provides a flag called alwaysUseMessageFormat
that can be used if MessageFormat
should be applied to all messages.
The single rule is...
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:
- write always (
''
)
See also Why Spring MessageSource arguments are not filled correctly in some locales.
来源:https://stackoverflow.com/questions/22380243/is-there-a-single-rule-to-cope-with-single-quotes-in-writing-spring-resource-bou