Solaris 2.x への移行

国際化

Solaris 2.6 での変更のほとんどは以前の国際化機能の改善です。国際化サポートに関する詳細な情報については、プログラミングの国際化を参照してください。

プログラムの国際化に関わるアプリケーション開発者は次のガイドラインに従ってください。

文字サポート

Solaris 2.6 環境は拡張 UNIX コード (EUC)、VTF8、PCK、V165 をサポートしています。これにより、1 つのシステムで複数バイトと複数のコードセットを利用できます。

SunOS 4.x は ASCII 以外の文字のシングルバイト表現をサポートしていました。Solaris 2.6 では、複数バイト表現がサポートされています。このサポートは数千文字もあるアジア系言語の文字セットに必要です。

libc に含まれる複数バイトライブラリには次のような機能があります。

Solaris 2.6 は複数バイトファイル名をサポートしていますが、ログイン名とマシン名は ASCII 文字に制限するようにしてください。

メッセージカタログ

SunOS 4.x のメッセージカタログのサポートは Solaris 2.6 で強化され、複数バイト文字を使ってメッセージカタログを作成できるようになりました。

メッセージカタログを使うと、アプリケーションはアプリケーションが実行された母国語で実行時のメッセージを表示できます。これらのメッセージカタログは、言語ロケールによって指定される母国語用にはじめに作成しなければなりません。

ロケールデータベース

SunOS リリース 5.6 のロケールデータベース (/usr/lib/locale/locale) は、SunOS 5.x のロケールデータベースとは全く異なります。ただし、ユーザ側からは違いは分かりません。

コマンド

Solaris 2.6 のほとんどのシステムコマンドはメッセージ化されました。これらコマンドの多くには複数バイト機能があります。つまり、複数バイト文字表現が可能になっています。より多くのコマンドがメッセージ化されたことにより、ローカリゼーションの労力は軽減されます。

installtxt(1) コマンドは msgfmt(1) に変更されました。メッセージを抽出するには新しい xgettext(1) コマンドを使用します。

strftime(3C) を変更すると、日付および時刻フォーマットに影響を与えます。date(1) コマンドの出力フォーマットに依存するシェルプログラムは、新しいフォーマットを処理できるように修正しなければなりません。

chrtbl(8)catdef(8) は、localedef(1) に置き換えられました。

ライブラリ

/usr/xpg2lib/libxpg2.a アーカイブライブラリは利用できません。これらのルーチンは、libc に入りました。

表 17-1 にこれらのインタフェースの新しい位置を示します。

表 17-1 xpg2lib ライブラリルーチンの位置

ルーチン 

Solaris 2.6 での位置 

bindtextdomain

/usr/lib/libc

chroot

/usr/lib/libc

catgets

/usr/lib/libc

dgettext

/usr/lib/libc

getcwd

/usr/lib/libc

getut

/usr/lib/libc

l3tol

未サポート 

logname

/usr/lib/libc

malloc

/usr/lib/libc

swab

/usr/lib/libc

langinfo

/usr/lib/libc

gettext

/usr/lib/libc

sbrk

/usr/lib/libc

textdomain

/usr/lib/libc

これらのルーチンを使用するプログラムは -lxpg2 を C コンパイラに渡す必要はありませんが、libintl.h を含む必要があるものが現在あります。(これらのルーチンについては、表 17-1 を参照してください)。

catgetmsg(3C) ルーチンは利用できません。

setlocale(3C) によって戻される文字列におけるロケールカテゴリの順位は、SunOS 4.x と Solaris 2.6 では異なります。この文字列は通常 setlocale(3C) への次の呼び出しによって使用され、順位は問題とされません。アプリケーションはロケールカテゴリの特定の順位に依存しないようにしてください。