当前位置:Linux教程 - Linux文化 - Linux 国际化本地化和中文化(二)

Linux 国际化本地化和中文化(二)


([email protected])

--------------------------------------------------------------------------
国际化、本地化和中文化 国际化、本地化和多语言化的概念 中文化 X11 国际化的历史和级别 国际化标准组织 国际化的意义

Locale Locale 的概念 在X中使用Locale 文化习俗的差别

X 窗口系统的国际化 显示的国际化 字符集和编码 多字节字符(Multibyte)和宽字符(WideChar)的使用 Unicode 字体(Font)和字体集(FontSet) 信息的国际化 输入的国际化 打印的国际化 客户程序间通讯的国际化

开发符合国际化标准的软件 开发国际化软件 使非国际化软件国际化

目前中文化中存在的问题 编码动态切换的问题 中文编码自动识别问题 Linux上的中文平台到国际化的过渡

附录 宽字符处理函数函数与普通函数对照表 X 窗口系统下支持中文的函数库 支持多语言的典型软件 支持Unicode的软件 --------------------------------------------------------------------------

二 Locale

Locale 的概念

Locale 是ANSI C语言中最基本的支持国际化的标志, 对中文Linux来说, 如果它支持国际化, 那么支持中文Locale是最基本的要求.

Locale 是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory)和字符集(Codeset). 其格式为: 语言[_地域[.字符集]]. 如对中文GBK字符集, locale的格式是:zh_CN.GBK. 目前Linux上的中文 Locale还不完善, glibc2.1.x中的许多涉及Locale的C函数还不正确. 如果 用户需要安装中文GBK Locale, 可以直接使用TLC6.0中的:

glibc-2.1.2(含有GBK模块) localedata-zh-0.07 /usr/X11R6/lib/X11/locale/zh_CN.GBK/XLC_LOCALE(X 下的 GBK Locale)

Locale 包含了以下分类:

LC_COLLATE, 用于比较和排序. 排序对中文来说也比较重要, 但是现在的 glibc中的locale对中文支持有些问题. 汉字排序的 的方式有许多种, 按照 发音(汉语拼音)或者汉字笔画来排序 是比较容易被接受的. LC_CTYPE, 用于字符分类 LC_MONETORY, 用于货币单位 LC_NUMERIC, 用于数字显示格式. 下面是不同国家的在货币符号 和数字格 式上的不同:

中国大陆: 1,234.56RMB 美国: $1,234.56 德国: 1.234,56DM

LC_TIME, 用于时间和日期. 时间可以用12小时或者24小时的 格式来计算. 在小时和分钟之间可以用逗点或者冒号隔开. 下面 是一些Locale设置的时 间和日期的格式:

中国: 14点20分 2000年三月十四号 英国: 02:20pm 14/03/2000 美国: 02:20pm 03/14/2000 芬兰: 14.20 14.03.2000

LC_MESSAGES, 用于国际化信息, 主要是提示信息,错误信息, 状态信息, 标 题, 标签, 按钮和菜单等.

Locale 通过ANSI C 函数setlocale(分类, locale)来初始化locale 数据. 当locale设置为空时, locale的值便从系统的环境变量中取得. 为了 方便应用 软件, 设置所有的分类, 可以采用下述方式:

setlocale(LC_ALL, "");

如果不成功, 该函数返回NULL. 函数应该回落到setlocale(LC_ALL,"C").

在X中使用Locale

在X的客户程序中使用Locale的机制和在标准C函数中使用Locale的方式一样, 除 此之外, 在X库中还定义了另外两个函数来判断X的locale支持和设置locale 的修 饰(XModifier), 在X中使用Locale和libX11的基本步骤如下:

setlocale(): 设置当前的locale XSupportLocale(): 用来判断X是否支持目前设置的locale. XSetLocaleModifier(): 它用来指定一系列的locale修正值. 它的参量的格 式是@分类=赋值. 目前唯一可用的是输入 服务器的名称"im". 如果参量为 空, 则根据系统的环境 变量XMODIFIERS查找. 比如在系统上设置了环境变 量:

% setenv XMODIFIERS @im=Chinput (csh) 或 % export XMODIFIERS=im=Chinput (bash)

则客户程序将查找到输入服务器Chinput, "Chinput"是 输入服务器所设置 的名称.

文化习俗的差别

下面是在国际化和本地化过程中常常遇到的并且应当注意的地方, 对国际化软件 的开发, 应该充分注意到各个地域的文化和习惯, 开发出通用的软件, 对于本地 化过程, 则应选择与本地域相符的习惯.

姓名,地址等特殊信息
姓名中的"姓"和"名"的先后次序, 地址书写的先后次序 电话号码的长度等 等 图标的通用性
图标是易于接受的用户界面, 设计时应考虑到地域习惯, 而且图标上不能有 图形文字, 否则需要重新设计本地图标, 并翻译图标上的文字. 声音使用
不适当的声音或提示可能会引起人的反感. 另外, 声音 的性别对某些国家 是敏感的. 颜色使用
颜色和色调与民俗有关, 比如红色在美国表示危险, 在中国 表示喜庆. 纸张尺寸
打印纸的尺寸因地域而不同, 在选择缺省尺寸时应注意. 键盘差别
在键盘上的键可能因国家而异, 键的个数也可能不一样. 影射关系也不同. 政治因素
在产品设计上, 尽量不要有政治敏感性部分. (第二章完)

待续

相关链接: Linux 国际化本地化和中文化(一)