用户可使用 shell 环境变量来改变语言环境设置。每个种类命名一个现有的语言环境。setlocale() 函数直接设置或查询这些种类的设置。国际化的功能使用这些设置来访问所需语言环境相应的表。
环境变量可用以间接设置种类:当 setlocale() 将种类设置为该地点的缺省设定值时,它使用每个环境变量的设定值来设置相关种类。setlocale() 函数不改变环境变量的设定值,只是读取它们的设定值。
可用下列步骤改变系统范围的缺省语言环境。
通过添加或改变此行以编辑 /etc/default/init 文件。
用 C、zh、zh.GBK 或 zh.UTF-8 替换 locale。
LANG=locale |
使所有用户退出 CDE。
键入下列命令:
%su # /usr/dt/bin/dtconfig -kill |
键入下列命令:
% su # reboot |
术语"语言环境"和"种类"有如下关系:
语言环境包括语言规范、地域、代码集和其它特征。简体中文 Solaris 操作环境包括下列语言环境:
C
-对英文 ASCII 环境,该语言环境必须设置为 C
。
zh
-对简体中文 EUC 环境,该语言环境必须设置为 zh
。
zh.GBK
-对简体中文 GBK 环境,该语言环境必须设置为 zh.GBK
。
zh.UTF-8
-对简体中文 Unicode 环境,该语言环境必须设置为 zh.UTF-8
。
种类是组成语言环境的特征集。例如,字符显示或时间/日期的表达,其性能取决于 语言环境 。简体中文 Solaris 种类包括下列内容:
LC_CTYPE
设置分类和转换的字符类型。
LC_TIME
设置用于表达日期和时间的语言环境。
LC_NUMERIC
设置数字表达的语言环境(也用于 I/O)。
LC_MONETARY
设置货币表达的语言环境。
LC_MESSAGES
设置给用户的消息的语言环境。
LC_COLLATE
设置取决语言环境的字符串校对。
环境变量 LC_ALL
明确为所有种类设置相同的语言环境;它有最高级优先权。如果种类或 LC_ALL
未设置,则 LANG
环境变量将决定种类设置。
关于简体中文窗口系统输入服务器,键组合进程把键盘上的某些键同应用程序的某些操作链接在一起。可以把应用程序的复杂操作 (例如关闭打开的窗口) 组合成单一键或一系列键,如同 CTRL-H 或 Esc w c 一样。
所有输入转换模式下与非 ASCII 输入转换相关的控制键命令都在 /usr/lib/mle/zh/data/keybind.dat 中设置。在简体中文 Solaris 用户指南第四章"简体中文的输入" 末尾的表中列出了缺省命令。
只有在 zh 语言环境下,才可用改变此文件中的键名并重新启动 htt 输入服务器的方法来更改键组合。可按如下方法制作和使用自己定制的 keybind.dat 文件:
在另一目录中制作名为 keybind.dat 的定制拷贝。
把环境变量 MLE_PATH
设置为包含这一定制文件的目录路径名。
启动输入服务器。
然后查找 MLE_PATH
中设置的目录以寻找 keybind.dat 文件和该文件中为用户设置的命令。
如果 MLE_PATH
未设置或不包含可使用的 keybind.dat 文件,则使用 /usr/lib/mle/zh/data/keybind.dat。
要改变键的组合,编辑组合键文件以新键代替缺省键。也可使用键组合和开/关切换。
在 C shell 级,每个环境变量都可以 shell 命令设置成语言环境 (用于 ASCII 的 C
、用于 EUC 简体中文的 zh
或 GBK 简体中文的 zh.GBK
) ,方法如下:
C shell 用户可输入如下 shell 命令:
system% setenv LC_TIME locale |
Bourne shell (sh) 用户可用 set 或 export:
$ set -a LC_TIME $ LC_TIME=locale |
或者
$ LC_TIME=locale $ export LC_TIME |
设置 zh
或 zh.GBK
为语言环境则让用户环境可以用简体中文格式和文本显示时间。用户可以为工作的环境定义混合的语言环境。例如,字符可以简体中文键入和转换,时间可以法文格式显示而消息可以英文显示。
许多用户在单一文化环境中工作。 LC_ALL
和 LANG
环境变量把所有种类设 置为系统缺省值。例如,这些 C shell 命令把所有种类的系统 缺省设置为 locale.
system% setenv LC_All locale system% setenv LANG locale |
系统管理员或用户可设置缺省值,setenv 语法可在程序设计时使用。
该设置在下次应用程序行调用 setlocale() 函数把种类设置为缺省设置时生效:setlocale()(LC_
XXX ""
)