NLS简介

来源:百度文库 编辑:神马文学网 时间:2024/04/28 18:30:40
Unix 是在发展于美国的作业系统, 所使用的文字也一直是英文为主的
ASCII 码;国际化 (internationalization) 及本土化 (localization)
的需求从未考虑过。在问世二十多年后的今天, Unix 遍布全世界, 提
供一个介面让使用者能用他们自己的语言(1), 而不只是英文, 来和应
用程式沟通, 已是十分重要的课题了。于是, 就有了 NLS 的诞生, 以
实现 Unix 及应用软体的国际化及本土化的目标。
NLS (Native Language Support) 是一个附加于 Unix 上的子系统
(subsystem), 其目的就是使传统的 Unix 系统及其上之应用程式, 能
够不拘限于某一种语言, 和使用者所使用的语言独立( language
independent)。
NLS 能使程式设计师撰写出来的程式, 很有弹性地在不同使用不同的语
言环境下都可使用。程式只须撰写、编译一次, 同一个可执行档会依使
用者的语言不同, 在执行时 (run-time) 自动改变所使用的字码集、显
示讯息、文字处理能力等等, 让使用者可以自己熟悉的语言和应用程式
沟通。在过去以及现在, 某一软体都是为某一种语文或字码集 (如英文
ASCII 码, 中文 BIG5 码等等) 所写; 如要在别种语言环境下使用时,
常常就必须重写。而未来使用 NLS 后, 应可避免此一情况。
因为中文文字的特性, 处理中文资料的软体会因为所使用中文内码的不
同而必须使用不同的软体, 如同不同国家的使用不同的语文一般。
由于中文文字的特性, 一个字须用 2 到 4 的 byte 来表示其内码值。
许多既有的英文版软体为了能处理中文, 不但须修改成具多位元组文字
的处理能力, 而往往更改后的版本, 若不是功能上相较之下有瑕疵, 即
是中文版本较英文版为旧。
再者就是: 中文内码的种类繁多, 如同不同国家民族使用不同语言般歧
异。当软体针对某一内码开发后, 如要在他种内码下使用时, 重写所需
之工夫, 往往并不亚于自英文版改至中文版。为了不同内码必须开发不
同之版本, 也使得中文的资料及程式的重覆使用特性 (reusability)
大为降低。甚至会有某些中文内码环境无类似软体可用之情形产生。
如果利用 NLS 技术, 使得单一版本的软体即可适用于多种中文内码的
环境; 不需要因语言、字元宽度、编码方式等等不同而修改或重新编
译程式。如此可使中文软体不须因中文内码环境之不同开发不同版本,
以节省成本及提高程式和资料的重覆使用性。同时也可使许多英文软
体改成中文版的移植较为容易。
NLS 主要包含了一 C 语言的程式库、工具程式, 以及一种新程式写
作观念 (programming style)。
在概念上, NLS 包含了下面三部份 :
.一个和语言独立 (language dependent) 的程式 : 和使用者所使
用的语言言依赖(language dependent) 的部份并不是 hard code
在应用程式内, 而是由 NLS 函数内部来处理。
.Message catalogs : 应用程式所显示的讯息均不 hard code 在程
式中, 而是以外部档案的方式储存。当在不同的语言环境下使用时,
会自动地选择相对应的讯息档。
.Language Tables : 所有和语言(或内码)相关的资讯, 均以表格的
方式储存。应用程式在执行时依据使用者设定的语言环境变数, 读
取相对应的语言表。
而 NLS 的函数及工具程式, 可依照上述概念, 分为 :
.宽字元 (wide character) 及相关处理函数:
NLS 定义了一种新的资料型态: 宽字元。传统的 C 语言中, 通常都
是使用 char 资料型态来储存字元 (character)。 char 通常是定
义成一个 byte 的大小, 因此一个如英文字母的字元只须一个 char
的空间就足以表达 ; 但是中文字至少须要 2 至 4 个 char 才能表
示其内码值, 所以储存一个中文字须要数个 byte 的空间才够。也
使得一个中文字不是以一个整体的文字, 而是零散的数个 byte (char)
的组合。
宽字元则是打破此一限制及观念 : 它是一种新的用来表示单一或多
位元组字元的内部资料型态。它的大小大于一个 byte, 通常是定义
成四个 byte 宽, 以保证一个宽字元就足以表达一个语言所有的文
字。中文字不须要再以两个或四个 byte ( char ) 来表示一个中文
字。不论是一个中文字或一个英文字母, 都是以一个宽字元表示。
如此在内部处理上, 可以大大减低了因为中英文字(母)所占的 byte
数不同而造成的困扰。
除了宽字元的资料型态外, 另有相当多的宽字元与多位元组字元转
换的函数, 宽字元的输出入函数, 字串函数, 及字元处理、内码转
换等函数。
.Message Catalog : 提供函数使应用程式可以在执行时读入相对
应的讯息档。
.Language Table : 提供工具程式来建立包含语言特性的语言表,
以供应用程式在执行时使用。
.其他 : 其他另有函数, 来处理日期, 货币、时间等格式之间的
转换。