android 本地化[ICU4J Android 框架 API] 一

ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。从 Android 7.0(API 级别 24)开始,Android 在 android.icu 软件包下显示 ICU4J API 子集,供应用开发者使用。这些 API 使用设备上具有的本地化数据。因此,您可以通过不将 ICU4J 库编译到 APK 来减少 APK 占用空间;相反,您可以只在框架中调用它们。(在此情况下,您可能想要提供多个版本的 APK,这样,运行比 Android 7.0(API 级别 24)低的 Android 版本的用户可以下载包含 ICU4J 库的应用版本。)

本文档开头提供了有关支持这些库所需的最低 Android API 级别的一些基本信息。然后,介绍关于 Android 特定的 ICU4J 实现您需要了解的内容。最后,介绍如何在 Android 框架中使用 ICU4J API。

与 ICU4J 的关系


Android 通过android.icu 软件包(而非 com.ibm.icu)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。

表 1. Android 中使用的 ICU 和 CLDR 版本]。

Android API 级别 ICU 版本 CLDR 版本
Android 7.0(API 级别 24) 56 28

以下是几点注意事项:

  • ICU4J Android 框架 API 不包含所有的 ICU4J API。
  • NDK 开发者应了解 Android ICU4C 不受支持。
  • Android 框架中的 API 不会取代 Android 对使用资源进行本地化的支持。

从 com.ibm.icu 迁移至 android.icu 软件包


如果您已在应用中使用 ICU4J API,且android.icu API 符合您的要求,那么要迁移至框架 API,需要将 Java 导入从 com.ibm.icu 更改为 android.icu。然后,您可以从 APK 移除您自己的 ICU4J 文件的副本。

:ICU4J 框架 API 使用 android.icu命名空间,而不是 com.ibm.icu。这是为了避免在包含自己的 com.ibm.icu 库的 APK 中出现命名空间冲突。

从其他 Android SDK API 迁移至 android.icu API

java 和 android 软件包中的某些类与在 ICU4J 中找到的一些类等效。不过,ICU4J 通常为标准和语言提供更广泛的支持。

下面是一些入门示例:

替代项
java.lang.Character android.icu.lang.UCharacter
java.text.BreakIterator android.icu.text.BreakIterator
java.text.DecimalFormat android.icu.text.DecimalFormat
java.util.Calendar android.icu.util.Calendar
android.text.BidiFormatter android.icu.text.Bidi
android.text.format.DateFormat android.icu.text.DateFormat
android.text.format.DateUtils android.icu.text.DateFormat android.icu.text.RelativeDateTimeFormatter

授权


ICU4J 按照 ICU 许可发布。如需了解详情,请参阅 ICU 用户指南

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值