Is there a single rule to cope with single quotes in writing Spring Resource Boundle?

戏子无情 提交于 2019-12-20 18:52:31

问题


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?


回答1:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!