编写Spring Resource Bundle时是否有单一规则来处理单引号?

时间:2014-03-13 13:32:56

标签: java spring internationalization resourcebundle double-quotes

Spring的ResourceBundleMessageSource使用MessageFormat替换邮件中的占位符({0})。

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

因此,您的翻译人员必须了解编写和维护资源包时的两个规则

  • 如果带有单引号的邮件至少包含一个占位符(''),则写入({0});
  • 如果带有单引号的邮件不包含占位符,则写入(')。

在编写Spring Resource Boundle时是否有单一规则来处理单引号?

1 个答案:

答案 0 :(得分:10)

ResourceBundleMessageSource提供了一个名为alwaysUseMessageFormat的标记,如果MessageFormat应该应用于所有邮件,则可以使用该标记。

单一规则是......

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

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

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

  • 始终写(''

另见Why Spring MessageSource arguments are not filled correctly in some locales