LocalizableTextFormatter 类

在 com.ibm.websphere.i18n.localizabletext 包中找到的 LocalizableTextFormatter 类是使用可本地化文本包的主要编程接口。该类的实例包含创建键和资源束的特定语言字符串所需的信息。

LocalizableTextFormatter 类扩展 java.lang.Object 类并实现以下接口:
  • java.io.Serializable
  • com.ibm.websphere.i18n.localizabletext.LocalizableText
  • com.ibm.websphere.i18n.localizabletext.LocalizableTextL
  • com.ibm.websphere.i18n.localizabletext.LocalizableTextTZ
  • com.ibm.websphere.i18n.localizabletext.LocalizableTextLTZ

创建和初始化类实例

LocalizableTextFormatter 类支持下列构造函数:
  • LocalizableTextFormatter()
  • LocalizableTextFormatter(String resourceBundleName, String patternKey, String appName)
  • LocalizableTextFormatter(String resourceBundleName, String patternKey, String appName, Object[] args)
LocalizableTextFormatter 实例必须包含某些值,如资源束名称、键和格式化应用程序的名称。 如果未使用以上列出的第二个构造函数来传递这些值,那么可以通过下列调用来分别设置它们:
  • setResourceBundleName(String resourceBundleName)
  • setPatternKey(String patternKey)
  • setApplicationName(String appName)

可以使用第四种方法 setArguments(Object[] args),以在完成构造后设置可选的本地化值。请参阅主题底部的特定于应用程序的值的处理。有关用法示例,请参阅组成复杂字符串

格式化文本的 API

根据语言环境和时区值的某个组合,LocalizableTextFormatter 类中的格式化方法从一组消息密钥和资源束生成字符串。 实现与四个可本地化文本接口中其中一个相对应的每种方法。下列列表表明在其中定义每种格式化方法的接口:
  • LocalizableText.format()
  • LocalizableTextL.format(java.util.Locale locale)
  • LocalizableTextTZ.format(java.util.TimeZone timeZone)
  • LocalizableTextLTZ.format(java.util.Locale locale, java.util.TimeZone timeZone)

不带自变量的格式方法使用设置为 Java™ 虚拟机缺省值的语言环境和时区值。所有这四种方法将根据需要给出 LocalizableException 对象。

消息目录和 appName 值的位置

与可本地化文本包一起写的应用程序能本地或远程访问消息目录。在分布式环境中,使用远程、集中式定位的消息目录是适当的。所有客户机可使用相同的目录,这样简化了目录的维护。本地格式化在测试环境下是有用的,且在某些情形下是适当的。要支持本地或远程格式化,LocalizableTextFormatter 实例必须表明格式化应用程序的名称。

例如,当应用程序通过使用远程目录格式化消息时,该消息实际上是用服务器上的企业 Bean 格式化的。 尽管可本地化文本包包含代码,以自动查找格式化程序 Bean 并向它发出调用,应用程序需要知道格式化程序 Bean 的名称。LocalizableTextFormatter 类中的几个方法都使用描述为 appName(指格式化应用程序的名称)的值。 不必在其中设置值的应用程序的名称。

消息的高速缓存

LocalizableTextFormatter 实例可以可选地高速缓存已格式化的消息,因此当再次需要这些消息时不需要重新格式化。缺省情况下,没有启用高速缓存,但是您可以使用 LocalizableTextFormatter.setCacheSetting(true) 调用来启用高速缓存。当启用了高速缓存并且调用了格式化方法时,该方法确定消息是否已经被格式化。 如果已格式化,将返回高速缓存的消息。如果在高速缓存中未找到消息,那么将格式化消息并返回给调用者,并且将高速缓存消息的副本以供下次使用。

如果高速缓存消息后禁用高速缓存,那么那些消息会保留在高速缓存中,直到调用 LocalizableTextformatter.clearCache 方法清除该高速缓存。任何时候您都可清除高速缓存;调用下列任何一种方法时,高速缓存将被自动清除。
  • setResourceBundleName(String resourceBundleName)
  • setPatternKey(String patternKey)
  • setApplicationName(String appName)
  • setArguments(Object[] args)

提供撤退信息的 API

在一些情况下,格式化消息是不可能的。 可本地化文本包实现撤退策略,它使得即使在消息无法正确地格式化成请求的语言时也能获取一些信息。 LocalizableTextFormatter 实例可以可选地存储消息字符串、时区和语言环境的撤退值。可以忽略这些值,除非 LocalizableTextFormatter 实例发出异常。要设置撤退值,可根据需要调用下列方法:
  • setFallBackString(String message)
  • setFallBackLocale(Locale locale)
  • setFallBackTimeZone(TimeZone timeZone)

有关用法示例,请参阅生成本地化的文本

特定于应用程序的值的处理

可本地化文本包对基于时区和语言环境的本地化提供本机支持,但是您也可以在其他值的基础上构造消息。 如果需要考虑格式化本地化的文本中除语言环境和时区外的其他变量,那么写您自己的 formatter 类。

formatter 类可以扩展 LocalizableTextFormatter 类或独立实现某些或所有相同的可本地化文本接口。您的类至少必须实现 java.io.Serializable 接口以及至少一个可本地化文本接口及其相应的格式化方法。 如果类实现了多个可本地化文本接口和格式化方法,接口的求值顺序如以下所示:
  1. LocalizableTextLTZ
  2. LocalizableTextL
  3. LocalizableTextTZ
  4. LocalizableText

作为一个示例,可本地化文本包提供了一个报告时间和日期的类 (LocalizableTextDateTimeArgument)。 在那个类中,将依照以下三个值本地化日期和时间:语言环境、时区和样式。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rin_ltfapi
文件名:rin_ltfapi.html