位置:海鸟网 > IT > linux/Unix >

抓住机遇 构筑稳健的中文Linux系统3

3. 本地化数据库Locale DB

国际化的第三个内容是搞好本地化数据库Locale DB。

语言、字符集、文化习俗等组成一个软件运行时的本地环境Locale。一个Locale是从本地化特征中提取的执行环境。它包括语言、地域、字符集。Locale的格式是ZH_CN.GBK,表示中文(zh)、中国(CN)、字符集(GBK)。

Locale可以一组Shell环境变量LANG、LC_ALL、LC_CTYPE、LC_COLLATE、LC_TIME、LC_MONETORY、LC_NUMERIC、LC_MESSAGES进行设置,也可以通过C语言国际标准中提供的setlocale()函数在应用程序中查询和设置。用户可以在运行时设置整个Locale的全部和部分。

Setlocale()函数为应用程序开发者提供了一种具有设置所有或部分(称之为类别)本地化环境的工具,setlocale()函数的语法为:

Char *setlocale (category,locale)

Int category;

Char *locale;

其中category是五个类别之一的名字,这些类别的名字是:

LC_CTYPE(提供字符分类和大小写区分功能);

LC_COLLATE(提供字符串比较和排序功能);

LC_TIME(提供日期和时间表示格式,如中国是年、月、日,美国是 月/日/年,英国是日/月/年);

LC_MONETARY(提供货币表示格式,如中国为阿拉伯数字后加RMB,在财务表格中为$后写阿拉伯数字);

LC_NUMERIC(提供数字表示格式)。

另外,用LC_ALL的特殊值使setlocale()函数设置所有的类别。

Locale数据库中除了上述本地环境服务,还包括消息服务和代码集转换。

4. 输入、输出服务(I/O服务)

输入法可分为两大类,即模式识别类和编码类。模式识别类包括声音输入法、光学字符识别(optical character recognition,OCR)、手写体识别等输入法。编码类主要是基于拼音、笔划、部首等输入法。

图形界面的国际化与中文本地化,具体包括:

建立中文输入模块的摘挂方法和界面;

建立各种点阵汉字库、矢量轮廓汉字库、曲线轮廓汉字库的摘挂方法和界面;

建立基于图形界面的汉字信息处理函数。

图形界面的国际化处理主要在三个层次上:

X字型服务器层(X Font Server)提供处理点阵、矢量轮廓、曲线轮廓文字;

库函数层(Libarries)、提供有关X字型服务器的函数,如把字体装入服务器、调入、查询、释放字型;

命令层(Commands)包括工具类和转换类命令:

图形界面中文本地化提供以下应用程序:汉字造字工具、汉字图标编辑器、汉字图文编辑工具、汉字图形打印工具。

Linux关于输入的标准还是限于键盘输入。在X11R6中,有XIM(X InputMehtod)标准。XIM是在应用程序和输入法之间的通信协议,目前还没有字符终端的输入法标准。

本地化

本地化(localization,L10n,取首尾两个字母,中间有10个字母)是向特定本地语言操作环境的转换。

本地化工作主要包括:代码体系国家特征文件和输入、输出服务的具体实现。

1.代码体系指采用的字符集,我国目前是GB2312、GBK、GB18030和GB13000。

2.国家特征文件指Locale中的本地环境内容。

3.输入、输出服务与国际化中的输入、输出服务密切相关。

输入方法按其功能可分为:输入管理层、前端处理层、输入单元层、输入单元算法层、辅助区处理层。

输入管理层是根据Locale环境自动到指定目录下找出所需的输入方法模块、将其启动或装入应用程序,并填入有关入口表,以便建立应用程序与输入方法之间的联系。

前端处理层是对各个输入单元进行管理、负责解释特殊键的含义,切换输入单元,并把输入单元处理的结果存于相应的缓冲区中,以保证应用程序取走、或调辅助区处理层函数显示。

输入单元层是根据输入单元的要求,对每个输入键事件进行解释、确定相应的动作、形成符合输入单元要求的输入串,并调用输入单元算法层的函数进行字典查找或代码转换运算,把查找结果返回前端处理层。

输入单元算法层是根据上层函数送来的输入码串进行字典查找运算,并把查找结果返回上一层函数。

辅助区处理层用来提供输入方法的界面,即时状态区、预编辑区和造字区类处理函数进行相应的管理。