NLS简介

NLS 的发展背景

Unix 是在发展于美国的作业系统, 所使用的文字也一直是英文为主的 ASCII 码; 国际化 (internationalization)本土化 (localization) 的需求从未考虑过。在问世二十多年后的今天, Unix 遍布全世界, 提 供一个介面让使用者能用他们自己的语言(1), 而不只是英文, 来和应 用程式沟通, 已是十分重要的课题了。于是, 就有了 NLS 的诞生, 以 实现 Unix 及应用软体的国际化及本土化的目标。

什么是 NLS ?

NLS (Native Language Support) 是一个附加于 Unix 上的子系统 (subsystem), 其目的就是使传统的 Unix 系统及其上之应用程式, 能 够不拘限于某一种语言, 和使用者所使用的语言独立( language independent)。 NLS 能使程式设计师撰写出来的程式, 很有弹性地在不同使用不同的语 言环境下都可使用。程式只须撰写、编译一次, 同一个可执行档会依使 用者的语言不同, 在执行时 (run-time) 自动改变所使用的字码集、显 示讯息、文字处理能力等等, 让使用者可以自己熟悉的语言和应用程式 沟通。在过去以及现在, 某一软体都是为某一种语文或字码集 (如英文 ASCII 码, 中文 BIG5 码等等) 所写; 如要在别种语言环境下使用时, 常常就必须重写。而未来使用 NLS 后, 应可避免此一情况。

为什么需要中文 NLS ?

因为中文文字的特性, 处理中文资料的软体会因为所使用中文内码的不 同而必须使用不同的软体, 如同不同国家的使用不同的语文一般。 由于中文文字的特性, 一个字须用 2 到 4 的 byte 来表示其内码值。 许多既有的英文版软体为了能处理中文, 不但须修改成具多位元组文字 的处理能力, 而往往更改后的版本, 若不是功能上相较之下有瑕疵, 即 是中文版本较英文版为旧。 再者就是: 中文内码的种类繁多, 如同不同国家民族使用不同语言般歧 异。当软体针对某一内码开发后, 如要在他种内码下使用时, 重写所需 之工夫, 往往并不亚于自英文版改至中文版。为了不同内码必须开发不 同之版本, 也使得中文的资料及程式的重覆使用特性 (reusability) 大为降低。甚至会有某些中文内码环境无类似软体可用之情形产生。 如果利用 NLS 技术, 使得单一版本的软体即可适用于多种中文内码的 环境; 不需要因语言、字元宽度、编码方式等等不同而修改或重新编 译程式。如此可使中文软体不须因中文内码环境之不同开发不同版本, 以节省成本及提高程式和资料的重覆使用性。同时也可使许多英文软 体改成中文版的移植较为容易。

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 : 提供工具程式来建立包含语言特性的语言表, 以供应用程式在执行时使用。 .其他 : 其他另有函数, 来处理日期, 货币、时间等格式之间的 转换。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值