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

ロケールとは

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

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

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

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

通常、ロケール名は環境変数 LANG で指定します。ロケールのカテゴリは LANG に依存しますが、カテゴリ別に設定することも可能です (例、LC_TIME)。この場合、ロケールのカテゴリは LANG の設定に優先します。 LC_ALL オペランドが設定されている場合、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 と同じものです。

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

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

翻訳メッセージの言語を指定します。

LO_LTYPE

言語のレンダリングに関する情報を提供する、配置 (レイアウト) エンジンを指定します。言語のレンダリング (またはテキストのレンダリング) は、テキストのシェイピングと方向設定から成ります。