国际化上下文 API:编程参考
应用程序组件通过 com.ibm.websphere.i18n.context 包中的 UserInternationalization、Internationalization 和 InvocationInternationalization 接口通过程序管理国际化上下文。
以下代码示例介绍了国际化上下文 API:
public interface UserInternationalization {
public Internationalization getCallerInternationalization();
public InvocationInternationalization
getInvocationInternationalization();
}
public interface Internationalization {
public java.util.Locale[] getLocales();
public java.util.Locale getLocale();
public java.util.TimeZone getTimeZone();
}
public interface InvocationInternationalization
extends Internationalization {
public void setLocales(java.util.Locale[] locales);
public void setLocale(java.util.Locale jmLocale);
public void setTimeZone(java.util.TimeZonetimeZone);
public void setTimeZone(String timeZoneId);
}
UserInternationalization 接口
UserInternationalization 接口提供了多个工厂方法,用于获取对 CallerInternationalization 和 InvocationInternationalization 上下文对象的引用。使用这些引用来访问与当前线程相关的调用者和调用上下文的元素。
UserInternationalization 接口的方法:
- Internationalization getCallerInternationalization()
- 返回一个实现 Internationalization 接口的引用,它支持访问与当前线程相关的调用者国际化上下文的元素。如果禁用该服务,此方法将抛出 IllegalStateException 异常。
- InvocationInternationalization getInvocationInternationalization()
- 返回一个实现 InvocationInternationalization 接口的引用。如果禁用该服务,此方法将抛出 IllegalStateException 异常。
Internationalization 接口
Internationalization 接口声明了多个方法,它们提供对国际化上下文的只读访问。如果提供通过 UserInternationalization 接口创建的调用者或调用国际化上下文对象,将该对象绑定到 Internationalization 接口即可获得此类上下文类型的元素。请留意,只能通过此接口访问调用者国际化上下文。
Internationalization 接口的方法:
- Locale[] getLocales()
- 返回绑定到该接口的国际化上下文(对象)中的语言环境链,前提是该链不为 null;否则,该方法将返回包含 Java™ 虚拟机 (JVM) 的缺省语言环境的一个长度 (1) 链。
- Locale getLocale()
- 返回绑定到该接口的国际化上下文(对象)中的语言环境链中的第一个语言环境,前提是该链不为 null;否则,该方法将返回 JVM 的缺省语言环境。
- TimeZone getTimeZone()
- 返回与当前线程关联的调用者时区(即 SimpleTimeZone 实例),前提是时区不为 null;否则,该方法将返回进程时区。
InvocationInternationalization 接口
InvocationInternationalization 接口声明了多个方法,它们提供对 InvocationInternationalization 上下文的读写访问。如果提供通过 UserInternationalization 接口创建的调用国际化上下文对象,将该对象绑定到 InvocationInternationalization 接口以获取并设置调用上下文的元素。
根据容器管理的国际化 (CMI) 策略,在 CMI servlet 或企业 Bean 中调用任何 set 方法 setXxx() 时,它们都会抛出 IllegalStateException 异常。
InvocationInternationalization 接口的方法:
- void setLocales(java.util.Locale[] locales)
- 将语言环境链设置为调用国际化上下文中提供的链 locales。提供的链可以为 null 或具有长度 (>= 0)。当提供的链为 null 或具有长度 (0) 时,服务会将调用语言环境链设置为包含 JVM 的缺省语言环境的一组长度 (1)。Null 条目可以存在于提供的语言环境列表中,服务会将它替换为远程调用中的 JVM 的缺省语言环境。
- void setLocale(java.util.Locale locale)
- 将调用国际化上下文中的语言环境链设置为包含提供的语言环境 locale 的一组长度 (1)。提供的语言环境可以为 null,此时服务将链设置为包含 JVM 的缺省语言环境的一组长度 (1)。
- void setTimeZone(java.util.TimeZone timeZone)
- 将调用国际化上下文中的时区设置为提供的时区 time zone。如果提供的时区不是 java.util.SimpleTimeZone 的一个具体实例或为 null,服务将调用时区设置为 JVM 的缺省时区。
- void setTimeZone(String timeZoneId)
- 将调用国际化上下文中的时区设置为具有提供的标识 timeZoneId 的 java.util.SimpleTimeZone。如果提供的时区标识为 null 或无效(即该标识未显示在 java.util.TimeZone.getAvailableIds 方法返回的标识列表中),服务将调用时区设置为具有标识 GMT、偏移量为 00:00 的简单时区,否则为无效字段。