国際化対応言語環境の利用ガイド

ロケールとは

アプリケーションプログラムにとって主要な概念となるのは、プログラムのロケールの概念です。ロケールとは、自国語環境の明示的なモデルであり、定義です。ロケールの概念は、ANSI C 言語規格のライブラリ定義で明示的に定義され、組み込まれています。

ロケールは、国ごとの書式やその他の指定に関する多くのカテゴリから構成されています。プログラムのロケールは、コードセット、日付と時間の形式の規定、通貨の規定、10 進数の書式の規定、照合 (ソート) 順を定義します。

ロケールは、基本言語、使用国 (地域)、オプションのコードセットから構成されています。コードセットは、通常、言語に応じて自動的に選択されます。たとえばドイツ語は Deutsch の略語である de です。一方、スイス系ドイツ語は de_CH です。CH は Confederation Helvetica の略語です。この規定によって、通貨単位の指定のような国ごとに固有の差異に対応することができます。

言語によっては複数のロケールを持つものもあり、地域によって異なることがあります。たとえば、アメリカ英語を使う場合は en_US ロケール (アメリカ英語) を、イギリス英語を使う場合は en_GB (イギリス英語) を選択できます。

通常、ロケール名は環境変数 LANG で指定します。ロケールのカテゴリは LANG に依存しますが、カテゴリ別に設定することも可能です。この場合、そのロケールのカテゴリは LANG の設定に優先します。LC_ALL オペランドを設定すると、LANG とすべての個別ロケールカテゴリに優先します。

ロケールの命名規則は次のとおりです。

language[_territory][. codeset] [@modifier]

2 文字の language コードは ISO 639 に、2 文字の territory コードは ISO 3166 にそれぞれ準拠します。codeset は、ロケールで使用されているコードセットの名前です。modifier は、このロケールと、修飾子のないロケールを区別する特徴を表す名前です。

Solaris 製品の全ロケールには、US-ASCII コード値を持つ移植可能な文字セット (Portable Character Set) が含まれています。

移植可能な文字セットについては、『X/Open CAE Specification: System Interface Definitions, Issue 5 (ISBN 1–85912–186–1)』を参照してください。

単一のロケールが複数のロケール名を持つ場合があります。たとえば、POSIXC と同じロケールです。

C ロケール – デフォルトのロケール

C ロケール (POSIX ロケール) は、すべての POSIX 互換システムの POSIX システムデフォルトロケールです。Solaris OS は POSIX システムです。Single UNIX Specification, Version 3 によって C ロケールが定義されています。この仕様を閲覧およびダウンロードするには、http://www.unix.org/version3/online.html で登録が必要です。

作成した国際化プログラムを C ロケールで実行するように指定するには、次の 2 つの方法があります。

端末環境の現在のロケール設定をチェックするには、locale(1) コマンドを実行します。

system% locale

完全ロケールと部分ロケール

Solaris の完全ロケールは、ロケールとしてのすべての機能を備え、言語に対応した翻訳メッセージを含んでいます。部分ロケールは、言語に対応した翻訳メッセージを含んでいません。Solaris 環境のすべてのロケールは翻訳メッセージを表示できます。ただし、その言語に対応する翻訳メッセージがインストールされている必要があります。たとえば、次のロケールは部分ロケールにも完全ロケールにもなります。

LANGUAGES CD からドイツ語のメッセージがインストールされている場合、上記のすべてのロケールは、完全に翻訳されたデスクトップにアクセスするので、完全ロケールになります。この LANGUAGES CD には、以下の言語に対する翻訳メッセージが入っています。

部分ロケールはすべて SOFTWARE CD に格納されています。翻訳メッセージは LANGUAGES CD に格納されています。

英語ロケールはすべて完全ロケールであり、SOFTWARE CD に格納されています。

ロケールによって影響を受ける動作

文化が異なると、多くの場合、数、日付と時刻の表記、語句の区切り方、および著作物や話し言葉の引用符の使い方も異なります。ロケールは、以下に示す操作、ファイル、書式、および表現がさまざまな地域に合わせてどのように処理されるかを決定します。

Solaris 環境は、言語と文化に依存する情報をアプリケーションから分離し、アプリケーションとは別に保存します。したがって、異なる市場ごとにアプリケーションの翻訳や手直し、再コンパイルを行う必要はありません。各言語および慣習に合わせて外部情報を言語対応化するだけで新規市場に参入することができます。

ロケールのカテゴリ

以下にロケールのカテゴリを示します。

LC_CTYPE

文字処理関数の動作を制御します。

LC_TIME

日付と時間の形式を指定します。指定には月の名前、曜日、一般的な完全表記と省略表記も含まれます。

LC_MONETARY

通貨の形式を指定します。これには、そのロケールの通貨記号、千単位の区切り記号、符号の位置、小数位以下の桁数などが含まれます。

LC_NUMERIC

小数位記号 (小数点)、千単位の区切り文字、グループ化を指定します。

LC_COLLATE

そのロケールの照合順序や、正規表現の定義を指定します。

LC_MESSAGES

翻訳メッセージの言語、および肯定と否定の応答ロケール (yesno の文字列と表現) を指定します。

LO_LTYPE

言語のレンダリングに関する情報を提供する、配置 (レイアウト) エンジンを指定します。言語のレンダリング (またはテキストレンダリング) は、スクリプトの形状と方向の属性に依存します。