在编写Spring Resource Boundle时,是否有单一的规则来应对单引号?

Spring用于替换消息中的占位符()。ResourceBundleMessageSourceMessageFormat{0}

MessageFormat要求使用两个单引号 () 对单引号 () 进行转义(请参见:MessageFormat Javadoc)。但是,默认情况下,不包含任何参数的消息不会被 解析,因此不需要转义没有参数的消息中的单引号。'''MessageFormat

因此,您的译员在编写和维护资源包时必须注意两条规则

  • 写 () 如果带有单引号的消息也包含至少一个占位符 ();''{0}
  • 如果带单引号的消息不包含任何占位符,则写 ()。'

在编写Spring Resource Boundle时,是否有单一的规则来应对单引号?


答案 1

ResourceBundleMessageSource提供了一个调用的标志,如果应将其应用于所有消息,则可以使用该标志。alwaysUseMessageFormatMessageFormat

唯一的规则是...

使用以下命令为所有资源边界配置一次:

<bean 
    id="messageSource" 
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="alwaysUseMessageFormat" value="true" />
    ...
</bean>

并且您的翻译人员必须了解编写和维护资源包的单个规则

  • 始终写入 ('')

另请参阅为什么在某些区域设置中未正确填写 Spring MessageSource 参数


答案 2

推荐