2    日本語環境の基本設定

この章では,国際化されたソフトウェアを日本語の環境で使用するためのロケールの指定方法や,端末の入出力に関連した漢字コードの設定などの日本語環境の設定について説明します。

2.1    日本語環境のインストール

Tru64 UNIX で提供する日本語機能を使用するためには,Tru64 UNIX のペース・オペレーティング・システムに加えて,ワールドワイド言語サポート・サブセットと日本語サブセットをインストールする必要があります。

図 2-1:  日本語環境を使用するために必要とするソフトウェア・サブセット

日本語機能を使用するために必要なこれらのサブセットのインストールは,インストレーション・プロシージャで日本語を選択することにより自動的に行われます。具体的なインストレーション手順については,『インストレーション・ガイド』および『インストレーション・ガイド -- 上級ユーザ編』を参照してください。

なお,下記の日本語機能を使用するためには,インストレーション・プロシージャによる Tru64 UNIX の日本語環境のインストレーションの後に,それぞれのソフトウェア・キットのインストレーションが必要になります。

2.2    国際化環境の設定

Tru64 UNIX の日本語機能を使用するためには,まず最初に,次にあげる国際化環境用の環境変数を設定します。

これらの環境変数の設定を正しく行うために, Tru64 UNIX では次に示す3つのスクリプト・ファイルを用意しています。

  1. /etc/i18n_profile

    ユーザの .profile ファイルに含めるべき設定が記述されています。

  2. /etc/i18n_login

    ユーザの .cshrc ファイルに含めるべき設定が記述されています。

  3. /etc/i18n_path

    他のコマンドが国際化環境用のコマンド,ユーティリティを使用するためのパスの設定が記述されています。

これらは,必要に応じて変更するためのテンプレート・ファイルです。システム管理者は,システムの構成や環境に合わせて /etc/i18n_profile および /etc/i18n_login の内容を適当に変更することができます。

注意

/etc/i18n_path はシステムのディレクトリ構造に依存しているため変更してはいけません。

/usr/sbin/i18nsetup というコマンドを使用すると,ユーザのスタートアップ・スクリプト($HOME/.profile および $HOME/.cshrc) の最後にスケルトン・ファイルの内容が追加されます。 この後でエディタを使用して,これらの追加された内容をファイルの中の適当な位置に移動します。

システム管理者(root)であれば, /usr/sbin/i18nsetup を使用して他のユーザのスタートアップ・スクリプトの変更を行うことができます。 この場合,次に示すように引数としてユーザ名を指定します。 この例ではユーザ kanaishimada のスタートアップ・ファイルが変更されます。

# /usr/sbin/i18nsetup kanai shimada
 

以上のスタートアップ・ファイルが正しく変更された場合,次回以降ログインしたとき,あるいは eval(sh の場合),source(csh の場合)で現在のシェル環境に設定を反映すると Tru64 UNIX の国際化環境のコマンドやユーティリティを使用することができるようになります。

注意

これ以降解説する日本語環境の設定や操作は,この節で解説した環境変数の設定が行われたものと仮定しています。 日本語環境の設定が正常に行われない場合,まずこれらの環境変数の値を調べてください。

2.3    CDE における言語設定

CDE におけるユーザごとの言語設定は,システムへのログイン時に,ログイン・ダイアログで「オプション」メニューの「言語」サブメニューから使用言語を選択することによって行います。「言語」サブメニューから,表 2-1 に示すいずれかの日本語ロケールを選択することにより,日本語でシステムを利用することができます。

表 2-1:  CDE の言語設定オプションで選択できる日本語ロケール

日本語 ja_JP
日本語 (DEC漢字) ja_JP.deckanji
日本語 (EUC) ja_JP.eucJP
日本語 (Super DEC漢字) ja_JP.sdeckanji
日本語 (Unicode) ja_JP.UTF-8
日本語 (シフトJIS) ja_JP.SJIS

CDE セッションの環境変数 LANG の値は,ログイン時に選択した言語にしたがって自動的に設定されます。このため,.login などの起動時スクリプトで LANG 環境変数を設定する必要はありません。

注意

CDE セッションをご使用の場合は,起動時スクリプトの中では環境変数 LANG を定義しないようにしてください。ログイン時に選択した言語とスクリプトが設定した環境変数 LANG の値が矛盾すると,セッションが正しく起動できない場合があります。

2.3.1    CDE における省略時の言語の設定

ワールドワイド言語サポート・ソフトウェアのインストレーション時に日本語だけを選択した場合,ウィンドウ環境の省略時の言語が自動的に日本語 EUC (ja_JP.eucJP) に設定されます。

ウィンドウ環境の省略時の言語設定を EUC 以外の日本語ロケールにしたい場合,あるいはワールドワイド言語サポート・ソフトウェアのインストレーション時に複数の言語を選択した場合は,以下の手順で日本語ウィンドウ環境の省略時の言語を設定 (変更) することができます。

  1. /etc/dt/config/Xconfig ファイルの有無を調べ,存在する場合は削除します。

  2. 以下の手順で新しい Xconfig ファイルを作成します。

    # cd /etc/dt/config
    # ln -s Xconfig.ロケール名 Xconfig
     
    

    次の例では,省略時の言語を日本語 EUC に設定しています。

    # ln -s Xconfig.ja_JP.euc.JP Xconfig
     
    

この設定はログイン画面の言語と省略時のセッション言語の両方に対して有効です。

2.4    日本語ロケールの設定

2.4.1    日本語ロケールの設定方法

Tru64 UNIX の国際化されたコマンドやライブラリを日本語に対応させるためには,明示的に言語,テリトリ,コードセット名の3つの組み合わせから表されるロケール (locale) を指定します。

ロケールを表すロケール名は,次のような形式で指定します。

Language_Territory.Codeset

LanguageTerritoryCodeset には,それぞれシステムで定義されている言語名,テリトリ名,文字コードセット名のニーモニックを指定します。

Tru64 UNIX では,表 2-2 に示す日本語ロケールを使用することができます。 これらはすべて「日本国内で使用されている日本語」というロケールを指定するものですが,文字データを表すための使用文字コードセットを明示的に区別しています。

表 2-2:  Tru64 UNIX で有効な日本語ロケール名

ロケール名 使用する文字コードセット名
ja_JP.deckanji DEC 漢字コードを使用
ja_JP.sdeckanji Super DEC 漢字コードを使用
ja_JP.eucJP 日本語 EUC を使用
ja_JP.SJIS シフト JIS を使用
ja_JP 日本語 EUC を使用
ja_JP.UTF-8 UTF-8 を使用

Tru64 UNIX では,インストール時に日本語ロケール用のロケール・データベースを 表 2-3 に示す場所に格納します。

表 2-3:  ロケール・データベース

ロケール名 ロケール・データベース
ja_JP.deckanji /usr/lib/nls/loc/ja_JP.deckanji
ja_JP.sdeckanji /usr/lib/nls/loc/ja_JP.sdeckanji
ja_JP.eucJP /usr/lib/nls/loc/ja_JP.eucJP
ja_JP.SJIS /usr/lib/nls/loc/ja_JP.SJIS
ja_JP.UTF-8 /usr/lib/nls/loc/ja_JP.UTF-8

日本語ロケールを指定するには,環境変数 LANG に 表 2-2 で示したロケール名のうちのいずれか 1 つを設定します。 Tru64 UNIX の国際化されたコマンドやライブラリは,起動時に環境変数 LANG を参照して,そこに設定されているロケール名に対応します。

Tru64 UNIX では,国際化されたコマンドやライブラリの処理の内容がロケールによって異なる状況を 表 2-4 の6種類のカテゴリに分類しています。 これらのカテゴリ名は,環境変数の名前と同じです。 ユーザは,これらの環境変数に適当なロケール名をそれぞれ独立に指定することができるため,処理の内容に応じて細かなロケールの指定を行うことが可能です。

表 2-4:  有効なカテゴリ名

カテゴリ名(環境変数名) 選択内容
LC_COLLATE 照合順序 (collation)
LC_CTYPE 文字の分類,大文字小文字などの文字の属性
LC_MESSAGES メッセージの表示形式
LC_MONETARY 金銭の表記形式
LC_NUMERIC 数値データの表記形式
LC_TIME 日時,時間の表記形式

これらのカテゴリのすべてに,同時に同じロケール名を設定するには 環境変数 LC_ALL を使用します。

システムは次の優先順位で各環境変数を参照し,正しいロケール名が設定されていればその変数値を使用してロケールの設定を行います。

  1. 環境変数 LC_ALL

  2. 環境変数 LC_COLLATE,LC_CTYPE,LC_MESSAGES,LC_MONETARY,LC_NUMERIC,LC_TIME

  3. 環境変数 LANG

環境変数 LANG および各カテゴリにロケール名を何も指定していない場合や不適当なロケール名を指定した場合,C ロケールが指定されたものとされます。 C ロケールは,ASCII 文字しか処理できない最も基本的な環境を示すロケールです。 C ロケールでは,日本語の処理はできません。

現在のロケール設定は locale コマンドで表示することができます。

% locale
 

詳細については, locale(1) リファレンス・ページを参照してください。

2.4.2    Unicode および dense コード・ロケールの切替え

システムに Tru64 UNIX のワールドワイド言語サポートをインストールすると,2 種類のロケール (Unicode ロケールと dense コード・ロケール) がローカリゼーション・サポート用にインストールされます。

インストール直後のデフォルト設定では,dense コード・ロケールが使用されます。システムでどちらのロケールを設定するかは,ユーザが選択して設定することができます。Unicode ロケールとdense コード・ロケールの相違点および切替え方法についての詳細は,『国際化機能ユーザーズ・ガイド』の第 1 章の「ロケールと言語の設定」の項を参照してください。

2.5    日本語端末の設定

端末への日本語の表示や,キーボードからの日本語入力を行うためには端末ドライバを日本語用のラインディシプリン(回線制御規則)に設定します。 設定は次のように行います。

% stty jdec
 

このコマンドを実行した直後の端末ドライバの設定状態は,次のようになります。

項目 該当する stty のオプション 設定状態
端末入出力コード tcode dec DEC 漢字コード
アプリケーション・コード acode コードセット名 ロケールに設定されている日本語コードセット (ロケールが設定されていない場合は eucJP)
日本語入力モード imode hiragana 8-bit コードを2バイトのひらがなコードとして入力
漢字変換機能 -ikk 変換機能 OFF

ユーザが使用している環境がこれらの設定とは異なる場合,必要に応じて stty コマンドを使用して各項目の再設定を行います。 以下のセクションでは,端末コード,アプリケーションコード,8-bit データの取り扱いをユーザの環境に合わせて設定するための stty コマンドの使用法を解説します。

2.5.1    端末コードとアプリケーション・コードの設定

端末コードとアプリケーション・コードには,それぞれ独立に漢字コードを設定することができるので,様々な組合せが可能です。

Tru64 UNIX の端末装置を使用するアプリケーション・プログラムは, 図 2-2 に示すように,端末装置とアプリケーションの間をカーネルに組み込まれた端末ドライバ atty [脚注 4] が仲介して通信しています。

図 2-2:  端末ドライバ(Asian tty)

Tru64 UNIX では,端末,端末ドライバ,アプリケーションの間で送受信される文字コードをユーザがそれぞれ選択することができます。 以後,端末がホストと通信を行うときの文字コードを端末コード,アプリケーションが処理する文字コードをアプリケーション・コードと呼びます。

2.5.1.1    端末コードの設定

DEC 漢字コード以外の文字コードセットを端末コードとして設定するには stty コマンドの tcode オプションを使用します。

% stty tcode コードセット名
 

指定可能なコードセット名を 表 2-5 に示します。

表 2-5:  端末コードとして指定できるコードセット名

コードセット名 対応するニーモニック
DEC 漢字 dec
シフト JIS SJIS
日本語 EUC eucJP
7-bit JIS jis7
8-bit JIS jis8
UTF-8 UTF-8

2.5.1.2    アプリケーション・コードの設定

アプリケーション・コードを設定するには stty コマンドの acode オプションを使用します。

% stty acode コードセット名
 

指定可能なコードセット名を 表 2-6 に示します。

表 2-6:  アプリケーション・コードとして指定できるコードセット名

コードセット名 対応するニーモニック
DEC 漢字 deckanji
Super DEC 漢字 sdeckanji
シフト JIS SJIS
日本語 EUC eucJP
UTF-8 UTF-8

2.5.2    8-bit データの取り扱い

端末から 8-bit データ,すなわち8ビット目がオンになっているデータが入力された場合,次のように解釈されます。

  1. 1バイトのカナ文字と解釈され

  2. 複数バイトの漢字コードの一部として解釈される。

これらは stty コマンドの imode オプションによって指定します。

2.5.3    端末の設定状態の確認

現在の端末ドライバの設定状態を表示するには, stty(1) コマンドをフラグやオプション与えずに実行します。

% stty
atty disc;speed 9600 baud; -parity hupcl
erase = ^?
brkint -inpck -istrip icrnl -ixany onlcr
echo echoe echok
imode=hiragana
tcode=dec acode=deckanji
% 
 

表示された各項目は stty(1) で指定するオプションに対応しています。 ハイフン(-)が前についているものは,現在無効(disable)なオプション, そうでないものは現在有効(enable)なオプションです。 stty コマンドのオプションについては, stty(1) リファレンス・ページを参照してください。

stty(1) に -a フラグを指定すると, stty(1) で設定できる全オプションの設定の状態が表示されます。

2.6    ファイル・コードの変換

Tru64 UNIX は, iconv(1) というファイル・コードを変換するコマンドを提供しています。 iconv(1) は次のように起動します。

iconv -f 入力コード -t 出力コード ファイル名 ...

iconv(1) は -f フラグに指定された「入力コード」から,-t フラグに指定された「出力コード」へ指定されたファイルを変換し,結果を標準出力に出力します。 コードセット名は, 表 2-7 に示されたものを指定することができ,ファイル名は,複数指定することができます。

表 2-7:  iconv で指定可能なコードセット名

コードセット名 対応するニーモニック
DEC 漢字 deckanji
Super DEC 漢字 sdeckanji
日本語 EUC eucJP
シフト JIS SJIS
7-bit JIS JIS7
7-bit JIS [脚注 5] jiskanji7
ISO-2022-JP 日本語メール・コード ISO-2022-JP
ISO-2022-JP 拡張日本語メール・コード ISO-2022-JPext
UCS-4 UCS-4
UCS-2 UCS-2
UTF-8 UTF-8

たとえばシフト JIS を使用したテキスト・ファイル foobar.txt を Super DEC 漢字のテキスト・ファイル foobar.sdec に変換するには,コマンド行上で次のように指定します。

% iconv -f SJIS -t sdeckanji foobar.txt >foobar.sdec
 

各コードセットのユーザ定義文字領域はそれぞれ異なります。 iconv でコード変換を行うときには,ユーザ定義文字の文字コードに割当てられるコードの値も変換されますので注意が必要です。 各コードセットのユーザ定義文字領域と,コードセット間での文字コードの対応関係は, udc(5) リファレンス・ページを参照してください。

表 2-7 に示すコードセットに加えて,他社製汎用機で使用されているコードセットへのファイル・コード変換をサポートしています。

表 2-8:  iconv で指定可能なコードセット名 (他社汎用機)

コードセット名 対応するニーモニック
IBM 漢字システム文字 ibmkanji
富士通 JEF コード JEF
日立 KEIS KEIS

詳細については, iconv_ibmkanji(5)iconv_JEF(5)iconv_KEIS(5) の各リファレンス・ページを参照してください。

2.7    メッセージ・カタログ

プログラムは,ユーザとの対話のために実行中に様々なメッセージを出力します。 従来のソフトウェアの多くは,メッセージ文字列がプログラム中に埋め込まれていたため,実行環境に合わせて出力内容を変えることはできませんでした。

Tru64 UNIX の国際化されたコマンドやライブラリは,メッセージ文字列をプログラムの中に埋め込むのではなく,メッセージ文字列を記録したファイルを実行時に参照し,その内容をメッセージとして出力します [脚注 6] 。 このように,実行時にファイルを参照して必要なメッセージを出力する機構や,そのファイルのことをメッセージ・カタログと呼びます。

Tru64 UNIX では,インストール時に日本語ロケール用のメッセージ・カタログをロケール名で指定される漢字コードごとに 表 2-9 に示すディレクトリに格納します [脚注 7]

表 2-9:  日本語メッセージ・カタログのあるディレクトリ

漢字コード メッセージ・カタログが置かれるディレクトリ
日本語 EUC /usr/lib/nls/msg/ja_JP
DEC 漢字 /usr/lib/nls/msg/ja_JP.deckanji
Super DEC 漢字 /usr/lib/nls/msg/ja_JP.sdeckanji
日本語 EUC /usr/lib/nls/msg/ja_JP.eucJP
シフト JIS /usr/lib/nls/msg/ja_JP.SJIS
UTF-8 /usr/lib/nls/msg/ja_JP.UTF-8

2.8    日本語リファレンス・ページの設定

Tru64 UNIX では,日本語に対応したコマンド,ライブラリについて日本語リファンレス・ページを提供しています。 リファレンス・ページは,man コマンドでオンライン上で参照するドキュメントです。 コマンド行から次のように man コマンドを実行すると,指定したタイトルのドキュメントが端末の画面上に出力されます。

% man 1 title
 

ここで第1引数の 1 は,リファレンス・ページのセクション番号です。 リファレンス・ページは,カテゴリごとに 表 2-10 のようなセクションに分類されています。

表 2-10:  リファンレンス・ページのセクション番号

内容の分類 対応するセクション番号
コマンド
システム・コール
ライブラリ・ルーチン
ファイル・フォーマット
nroff のマクロなど
その他
スペシャル・ファイル
システム管理

環境変数 LANG が日本語用に設定されている場合, man(1) コマンドは日本語リファレンス・ページのソース・ファイルが格納されているディレクトリ ( LANG が ja_JP.deckanji の場合は /usr/share/ja_JP.deckanji/man) を最初に検索し,日本語リファレンス・ページを表示します。

ただし,環境変数 LANG が ja_JP.SJIS に設定されている場合は,/usr/share/ja_JP.eucJP/man ディレクトリを探索し,コードセット・コンバータによって SJIS フォーマットに変換されます。

Tru64 UNIX で提供される英語版リファレンス・ページを参照する必要があるとき は,man コマンドの -M オプションを次のように使います。

% man -M /usr/share/man タイトル
 

man コマンドについての詳細は,リファレンス・ページ man(1) を参照してください。