国际语言环境指南

系统环境

本部分描述语言环境环境变量、TTY 环境设置、32 位和 64 位 STREAMS 模块以及终端支持。

语言环境环境变量

确保在系统上安装 en_US.UTF-8 语言环境。要检查各种类中的当前语言环境设置,请使用 locale 实用程序。

system% locale 
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

要使用 en_US.UTF-8 语言环境桌面环境,请首先选择该语言环境。在 TTY 环境中,通过将 LANG 环境变量设置为 en_US.UTF-8 首先选择语言环境,如下面的 C-shell 实例所示:

system% setenv LANG en_US.UTF-8

确保 LC_ALLLC_COLLATELC_CTYPELC_MESSAGESLC_NUMERICLC_MONETARYLC_TIME 种类未设置,或者设置为 en_US.UTF-8。如果设置了这些种类中的任何一个,则它们将覆盖较低优先级的 LANG 环境变量。有关环境变量分层结构的详细信息,请参见 setlocale(3C) 手册页。

您也可以从 CDE 桌面上启动 en_US.UTF-8 环境。在 CDE 登录屏幕的 Options -> Language 菜单上,选择 en_US.UTF-8

TTY 环境设置

根据所使用的终端和终端仿真器的不同,您可能需要将某些特定代码集的 STREAMS 模块推送到流上。

有关 STREAMS 模块和一般流的详细信息,请参见STREAMS Programming Guide

下表列出在终端环境中 en_US.UTF-8 语言环境支持的 64 位 STREAMS 模块。有关详细信息,请参见《Solaris 64-bit Developer's Guide》。

表 5–12 en_US.UTF-8 所支持的 STREAMS 模块

32 位 STREAMS 模块 

说明 

/usr/kernel/strmod/sparcv9/u8lat1

UTF-8ISO8859-1(西欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8lat2

UTF-8ISO8859-2(东欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8koi8

UTF-8 KOI8-R(西里尔语)之间的代码转换 STREAMS 模块


注意 –

从 Solaris 10 发行版开始,SPARC sun4u 平台不再支持 32 位内核。表 5–12 仅适用于 x86 平台的 32 位内核。有关详细信息,请参阅发行说明。


下表列出 en_US.UTF-8 支持的 64 位 STREAMS 模块。

表 5–13 en_US.UTF-8 所支持的 64 位 STREAMS 模块

64 位 STREAMS 模块 

说明 

/usr/kernel/strmod/sparcv9/u8lat1

UTF-8ISO8859-1(西欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8lat2

UTF-8ISO8859-2(东欧语言)之间的代码转换 STREAMS 模块

/usr/kernel/strmod/sparcv9/u8koi8

UTF-8 KOI8-R(西里尔语)之间的代码转换 STREAMS 模块

如何装入 STREAMS 内核模块
  1. 作为超级用户,请确定您运行的是 64 位 Solaris 还是 32 位 Solaris 系统。

    system# isainfo -v
    
    • 如果返回以下信息,则运行的是 64 位 Solaris 系统:

      64-bit sparcv9 applications
      32-bit sparc applications
    • 如果返回以下信息,则运行的是 32 位 Solaris 系统:

      32-bit sparc applications
    • 如果返回以下信息,则运行的是 32 位 x86 系统:

      32-bit i386 applications
  2. 确定您的系统是否已装入 STREAMS 模块。

    system# modinfo | grep modulename
    

    如果已安装了 STREAMS 模块(如 u8lat1), 则输出将类似于以下内容:

    system# modinfo | grep u8lat1
    89 ff798000  4b13  18   1  u8lat1 (UTF-8 <--> ISO 8859-1 module)
  3. 如果该模块尚未装入,请使用 modload(1M) 命令装入它。

    • 在 32 位系统上,键入:

      system# modload /usr/kernel/strmod/u8lat1
      
    • 在 64 位系统上,键入:

      system# modload /usr/kernel/strmod/sparcv9/u8lat1
      

      适当的 u8lat1 STREAMS 模块已装入内核中。此时您可以将其推送到流中了。

如何卸载 STREAMS 内核模块
  1. 作为超级用户,确认已装入内核模块。

    例如,要确认已装入 u8lat1,应键入:

    system# modinfo | grep u8lat1
    89 ff798000  4b13  18   1  u8lat1 (UTF-8 <--> ISO 8859-1 module)
  2. 使用 modunload(1M) 命令卸载内核。

    例如,要卸载 u8lat1 模块,应键入:

    system# modunload -i 89
    
如何设置 Latin-2 终端和 STREAMS 模块
  1. 使用第二个命令行中所示的 strchg(1M)。

    system% cat > tmp/mystreams 
    ttcompat
    ldterm
    u8lat1
    ptem
    ^D
    system% strchg -f /tmp/mystreams
    

    确保在使用 strchg(1) 时您是超级用户或此设备的属主。

  2. 要查看当前配置,请运行 strconf 命令。

    system% strconf
    ttcompat
    ldterm
    u8lat1
    ptem
    pts
    system%
  3. 要复位初始配置,请运行 strchg 命令。

    system% cat > /tmp/orgstreams
    ttcompat
    ldterm
    ptem
    ^D
    system% strchg -f /tmp/orgstreams
    

能够输入和输出 UTF-8 字符的 dttermxterm 终端

与 Solaris 操作系统以前的发行版不同,支持 UTF-8 代码集输入和输出的 dttermxterm 终端仿真器和任何其他终端在它们的流中无需附加任何的 STREAMS 模块。如果您使用 stty(1) 实用程序设置终端环境,ldterm 模块现在与代码集无关,并且支持 Unicode/UTF-8

要为 Unicode 语言环境设置正确的终端环境,请使用 stty(1) 实用程序。

system% /bin/stty defeucw

要查询当前的设置,请使用 stty 实用程序的 -a 选项,如下所示:

system% /bin/stty -a

注意 –

由于 /usr/ucb/stty 未经国际化,因此请改用 /bin/stty


Latin-1、Latin-2 或 KOI8-R 的终端支持

对于仅支持 Latin-1 (ISO8859-1)、Latin-2 (ISO8859-2) 或 KOI8-R 的终端,您应具有下列 STREAMS 配置:

head <-> ttcompat <->  ldterm <->  u8lat1 <-> TTY

此配置仅适用于支持 Latin-1 的终端。对于 Latin-2 终端,请将 STREAMS 模块 u8lat1 替换为 u8lat2。对于 KOI8-R 终端,请将该模块替换为 u8koi8

确保已将 STREAMS 模块装入到了内核中。

将设置保存在 ~/.cshrc

假定必需的 STREAMS 模块已装入内核,可以在 .cshrc 文件中保存以下行(C shell 实例)以便于使用:

setenv LANG en_US.UTF-8
if ($?USER != 0 && $?prompt != 0) then
     cat >! /tmp/mystreams$$ << _EOF
     ttcompat
     ldtterm
     u8lat1
     ptem
_EOF
     /bin/strchg -f /tmp/mystreams$$
     /bin/rm -f /tmp/mystreams$$
     /bin/stty cs8 -istrip defeucw
endif

.cshrc 文件中有了这几行后,您就不必在每次使用 STREAMS 模块时都要键入所有这些命令了。请注意,第二个 _EOF 应从该文件的第一列开始。