プログラミングの国際化

システム環境

ロケールの環境変数

en_US.UTF-8 ロケール環境を使用するには、まずロケールを選択します。システムに en_US.UTF-8 がインストールされていることを確認してください。

en_US.UTF-8 ロケール環境の使用方法
  1. TTY 環境で、まず環境変数 LANGen_US.UTF-8 に設定してこのロケールを選択します。C シェルの例を以下に示します。


    system% setenv LANG en_US.UTF-8
    
  2. 他のカテゴリが設定されていない (または、en_US.UTF-8 に設定されている) ことを確認します。これは、ロケールを設定する際、環境変数 LANG の優先順位が、 LC_ALLLC_COLLATELC_CTYPELC_MESSAGESLC_NUMERICLC_MONETARYLC_TIME などの他の環境変数に比べて低いからです。環境変数の階層についての詳細は、setlocale(3C) のマニュアルページを参照してください。

  3. さまざまなカテゴリの現在のロケール設定を調べるには、locale(1) ユーティリティを使用します。


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=

また、CDE ログイン画面の「オプション」->「言語」メニューで en_US.UTF-8 を選択することにより、en_US.UTF-8 環境を起動することもできます。

TTY 環境の設定

端末や dtterm(1) などの端末エミュレータで正しいテキスト編集を行うには、ユーザーは特定のロケール固有の STREAMS モジュールをストリームにプッシュしなければなりません。

STREAMS モジュールの詳細および一般的なストリームについては、『STREAM Programming Guide』を参照してください。

表 4-1 に、端末環境で en_US.UTF-8 ロケールによりサポートされる STREAMS モジュールを示します。

表 4-1 en_US.UTF-8 によりサポートされる 32 ビット STREAMS モジュール

32 ビット STREAMS モジュール 

説明 

/usr/kernel/strmod/eucu8

テール側 UTF-8 STREAMS モジュール

/usr/kernel/strmod/u8euc

ヘッド側 UTF-8 STREAMS モジュール

/usr/kernel/strmod/u8lat1

UTF-8 と ISO 8859-1 (西ヨーロッパ) のコード変換 STREAMS モジュール

/usr/kernel/strmod/u8lat2

UTF-8 と ISO 8859-2 (東ヨーロッパ) のコード変換 STREAMS モジュール

/usr/kernel/strmod/u8koi8

UTF-8 と KOI8-R (Cyrillic) のコード変換 STREAMS モジュール

表 4-2 に、en_US.UTF-8 ロケールによりサポートされる 64 ビット STREAMS モジュールを示します。

表 4-2 en_US.UTF-8 によりサポートされる 64 ビット STREAMS モジュール

64 ビット STREAMS モジュール 

説明 

/usr/kernel/strmod/sparcv9/eucu8

テール側 UTF-8 STREAMS モジュール

/usr/kernel/strmod/sparcv9/u8euc

ヘッド側 UTF-8 STREAMS モジュール

/usr/kernel/strmod/sparcv9/u8lat1

UTF-8 と ISO 8859-1 (西ヨーロッパ) のコード変換 STREAMS モジュール

/usr/kernel/strmod/sparcv9/u8lat2

UTF-8 と ISO 8859-2 (東ヨーロッパ) のコード変換 STREAMS モジュール

/usr/kernel/strmod/sparcv9/u8koi8

UTF-8 と KOI8-R (Cyrillic) のコード変換 STREAMS モジュール

STREAMS モジュールのカーネルへのロード

STREAMS モジュールをカーネルにロードするには、まずルートになります。


system% su
Password:
system#

次のように isainfo(1) ユーティリティを使用して、Solaris システムが 32 ビットと 64 ビットのどちらであるかを判断します。


system# isainfo -v
	64-bit sparcv9 applications
	32-bit sparc applications
	system#

この情報が返された場合は、実行されているのは 64 ビットの Solaris システムです。実行されているのは 32 ビットの Solaris システムである場合は、次のように表示されます。


system# isainfo -v
	32-bit sparc applications
	system#

modinfo(1M) を使用して、システムにすでに STREAMS モジュールがロードされていないかを確認します。


system# modinfo | grep eucu8modulename

eucu8 などの STREAMS モジュールがすでにインストールされている場合は、出力は次のようになります。


system# modinfo | grep eucu8
89 ff798000  4b13  18   1  eucu8 (eucu8 module)
system#

モジュールがすでにロードされている場合は、ロードする必要はありません。ただし、モジュールがロードされていない場合は、次のように modload(1M) を使用します。


system# modload /usr/kernel/strmod/eucu8modulename

32 ビットの eucu8 STREMAS モジュールがカーネルにロードされ、ストリームにプッシュすることができます。64 ビットの Solaris 製品を実行している場合は、次のように modload(1M) を使用します。


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

STREMAS モジュールがカーネルにロードされ、ストリームにプッシュすることができます。

モジュールをカーネルからアンロードするには、次のように modunload(1M) を使用します。この例では、eucu8 モジュールがアンロードされます。


system# modinfo | grep eucu8
89 ff798000  4b13  18   1  eucu8 (eucu8 module)
system# modunload -i 89

UTF-8 文字の入出力が可能な dtterm および端末

UTF-8 コードセットの入出力をサポートする dtterm(1) および任意の端末は、以下の STREAMS 構成である必要があります。


head <-> ttcompat <-> u8euc <->  ldterm <-> eucu8 <-> pseudo-TTY

この例では、u8euc および eucu8en_US.UTF-8 ロケールによりサポートされるモジュールです。1 つ前の節で説明した方法で、あらかじめ STREAMS モジュールをカーネルにロードしておきます。

上記の STREAMS の構成を設定するには、次のように strchg(1) を使用します。


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

strchg(1) を使用するには、ルートであるか、デバイスの所有者でなければなりません。STREAMS の現在の構成を確認するには、次のように strconf(1) を使用します。


system% strconf
ttcompat
u8euc
ldterm
eucu8
ptem
pts
system%

元の構成に戻すには、次のように再度 STREAMS の構成を設定します。


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

Latin-1、Latin-2、KOI8-R の端末サポート

Latin-1 (ISO 8859-1)、Latin-2 (ISO 8859-2)、または KOI8-R だけをサポートする端末の場合、STREAMS は次のように構成されている必要があります。


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

注 -

これは Latin-1 をサポートする端末用の構成です。Latin-2 端末の場合は、STREAMS モジュール u8lat1u8lat2 に置き換えます。KOI8-R 端末の場合は、このモジュールを u8koi8 に置き換えます。


上記の STREAMS の構成を設定するには、次のように strchg(1) を使用します。


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

strchg(1) を使用する場合、ルートかデバイスの所有者であることを確認します。現在の構成を確認するには、次のように strconf(1) を使用します。


system% strconf
ttcompat
u8euc
ldterm
eucu8
u8lat1
ptem
pts
system%

元の構成に戻すには、次のように STREAMS の構成を設定します。


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

端末オプションの設定

TTY 上での UTF-8 テキスト編集動作を設定するには、まず、次のように stty(1) を使用して端末オプションを設定してください。


system% /bin/stty cs8 -istrip defeucw

注 -

/usr/ucb/stty はまだ国際化されていないので、代わりに /bin/stty を使用します。


次のように、stty(1)-a オプションを指定して、現在の設定を照会することもできます。


system% /bin/stty -a

‾/.cshrc への設定の保存

必要な STREAMS モジュールがカーネルにロードされたら、以下の行を .cshrc ファイル (C シェルの場合) に保存すると便利です。


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

.cshrc ファイルに上記の行があると、毎回すべてのコマンドを入力せずに済みます。2 つめの _EOF は行の先頭になければなりません。mystreams という名前のファイルを作成し、C シェルを起動するたびに作成するのではなく、.cshrc ファイルで mystreams を参照することもできます。