软件国际化开发过程使用库(例如
Unicode
国际组件 (
ICU
) 库),隐藏了特定于语言环境的软件需求的文化细微差别和技术
复杂性,以使单个程序能够在世界任何地方处理任何语言的文本,是软件开发不可或缺的一部分。
Unicode
在环境中简化了对文本的操作,仅对传入和传出数据进行转换,使程序能够对程序环境中的所有文本数据使用标准编码方案,所以您不必跟踪特定文本的编码。
Unicode
支持多语言数据,可以在单个文本中混合语言,因为它对所有世界语言的字符进行编码,不必使用编码来标记数据片段以启用正确的字符。
简介
ICU
是一套成熟的、广泛使用的C/C++
和Java
库,为软件应用程序提供 Unicode
和全球化支持,ICU
具有广泛的可移植性,并在所有平台上以及在 C/C++
和Java
软件之间为应用程序提供相同的结果,ICU
是根据非限制性开源许可证发布的,该许可证适用于商业软件和其他开源或免费软件。
亮点
- 代码页转换:将文本数据与
Unicode
以及几乎任何其他字符集或编码进行转换。ICU
的转换表基于IBM
数十年来收集的字符集数据,是任何地方可用的最完整的。 - 排序规则:根据特定语言、地区或国家的约定和标准比较字符串。
ICU
的排序基于Unicode
排序算法加上来自Common Locale Data Repository
的特定于语言环境的比较规则,这是此类数据的综合来源。 - 格式化:根据所选区域设置的惯例格式化数字、日期、时间和货币金额。这包括将月份和日期名称翻译成所选语言、选择适当的缩写、正确排序字段等。这些数据也来自
Common Locale Data Repository
。 - 时间计算:除了传统的公历之外,还提供多种类型的日历。提供了一套完整的时区计算
API
。 - Unicode 支持:
ICU
密切跟踪Unicode
标准,提供对所有许多Unicode
字符属性、Unicode
规范化、大小写折叠和Unicode
标准指定的其他基本操作的轻松访问。 - 正则表达式:
ICU
的正则表达式完全支持Unicode
,同时提供极具竞争力的性能。 - Bidi:支持处理包含从左到右(英语)和从右到左(阿拉伯语或希伯来语)数据混合的文本。
- 文本边界:在文本范围内定位单词、句子、段落的位置,或确定显示文本时适合换行的位置。
优势
使用ICU
可以使您的项目国际化
- 它可以处理任何语言或语言组合的文本;
- 可以编写源代码,以便该程序可以在许多语言环境中工作;
- 可配置、可插入的本地化已启用;
- 同时支持多个语言环境;
- 非技术人员可以访问信息,而您不必向他们开放源代码;
- 可以开发软件,以便将相同的代码移植到各种平台。
获取
Icu
可以通过以下方式下载:
下载后,请参阅包含的README
文件,了解包含的内容、构建、安装等信息。
配置
- 获取
Git
存储库并创建安装目录和预编译目录
localhost@linux:~$ git clone https://github.com/unicode-org/icu.git
localhost@linux:~$ mkdir icu2arm icu/icu4c/build
- 预编译
localhost@linux:~$ cd icu/icu4c/build
localhost@linux:~/icu/icu4c/build$ ../source/runConfigureICU Linux/gcc
localhost@linux:~/icu/icu4c/build$ make
localhost@linux:~/icu/icu4c/build$ cd ../source
- 生成
Makefile
localhost@linux:~/icu/icu4c/source$ ./configure --host=arm-none-linux-gnueabi --prefix=${HOME}/icu2arm --disable-samples --disable-tests --with-cross-build=${HOME}/icu/icu4c/build
安装
localhost@linux:~/icu/icu4c/source$ make
localhost@linux:~/icu/icu4c/source$ make install
查看
localhost@linux:~/icu/icu4c/source$ cd ~/icu2arm
localhost@linux:~/icu2arm$ ls -la
total 28
drwxrwxr-x 7 localhost localhost 4096 Apr 28 15:13 .
drwxr-xr-x 49 localhost localhost 4096 Apr 28 15:13 ..
drwxrwxr-x 2 localhost localhost 4096 Apr 28 15:13 bin
drwxrwxr-x 3 localhost localhost 4096 Apr 28 15:13 include
drwxrwxr-x 4 localhost localhost 4096 Apr 28 15:13 lib
drwxrwxr-x 2 localhost localhost 4096 Apr 28 15:13 sbin
drwxrwxr-x 4 localhost localhost 4096 Apr 28 15:13 share
localhost@linux:~/icu2arm$ tree
.
.
.
16 directories, 252 files
localhost@linux:~/icu2arm$ cd lib
localhost@linux:~/icu2arm/lib$ file libicudata.so.72.0.1
libicudata.so.72.0.1: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped
接下来我们就可以把可执行程序和库文件上传开发板使用,头文件和库文件在源码编译时需要参数指定路径和链接。