アプリケーションプログラムにとって主要な概念となるのは、プログラムのロケールの概念です。ロケールとは、自国語環境の明示的なモデルであり、定義です。ロケールの概念は、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)』を参照してください。
単一のロケールが複数のロケール名を持つ場合があります。たとえば、POSIX は C と同じロケールです。
C ロケール (POSIX ロケール) は、すべての POSIX 互換システムの POSIX システムデフォルトロケールです。Solaris OS は POSIX システムです。Single UNIX Specification, Version 3 によって C ロケールが定義されています。この仕様を閲覧およびダウンロードするには、http://www.unix.org/version3/online.html で登録が必要です。
作成した国際化プログラムを C ロケールで実行するように指定するには、次の 2 つの方法があります。
すべてのロケール環境変数を設定解除する
system% unsetenv LC_ALL LANG LC_CTYPE LC_COLLATE LC_NUMERIC \ LC_TIME LC_MONETARY LC_MESSAGES
これにより、すべてのロケール環境変数が設定解除され、アプリケーションが C ロケールで実行されます。
ロケールを明示的に C または POSIX に設定する
system% setenv LC_ALL C system% setenv LANG C
アプリケーションによっては、現在のロケールを参照するために実際には setlocale(3C) を呼び出さずに LANG 環境変数をチェックします。この場合、setenv で、LC_ALL と LANG のロケール環境変数を指定することによって明示的に C ロケールを設定します。ロケール環境変数の優先関係については、setlocale(3C) のマニュアルページを参照してください。
端末環境の現在のロケール設定をチェックするには、locale(1) コマンドを実行します。
system% locale
Solaris の完全ロケールは、ロケールとしてのすべての機能を備え、言語に対応した翻訳メッセージを含んでいます。部分ロケールは、言語に対応した翻訳メッセージを含んでいません。Solaris 環境のすべてのロケールは翻訳メッセージを表示できます。ただし、その言語に対応する翻訳メッセージがインストールされている必要があります。たとえば、次のロケールは部分ロケールにも完全ロケールにもなります。
de_DE.ISO8859–1
de_DE.ISO8859–15
de_DE.UTF-8
de_AT.ISO8859–1
de_AT.ISO8859–15
de_CH.ISO8859–1
LANGUAGES CD からドイツ語のメッセージがインストールされている場合、上記のすべてのロケールは、完全に翻訳されたデスクトップにアクセスするので、完全ロケールになります。この LANGUAGES CD には、以下の言語に対する翻訳メッセージが入っています。
ドイツ語
フランス語
スペイン語
スウェーデン語
イタリア語
日本語
韓国語
簡体字中国語
繁体字中国語
部分ロケールはすべて SOFTWARE CD に格納されています。翻訳メッセージは LANGUAGES CD に格納されています。
英語ロケールはすべて完全ロケールであり、SOFTWARE CD に格納されています。
文化が異なると、多くの場合、数、日付と時刻の表記、語句の区切り方、および著作物や話し言葉の引用符の使い方も異なります。ロケールは、以下に示す操作、ファイル、書式、および表現がさまざまな地域に合わせてどのように処理されるかを決定します。
テキストデータのエンコーディングと処理
リソースファイルの言語とエンコーディングの識別
テキスト文字列の描画と配置
クライアント間のテキストの交換
選択したスクリプトのコードセットとテキスト処理の要件に合う入力方式の選択
文化的に固有なフォントおよびアイコンのファイル
アクションとファイルタイプ
ユーザーインタフェース定義 (UID) ファイル
日付と時刻の書式
数値形式
通貨形式
照合順序
ロケール特有の正規表現処理
通知と診断のメッセージと対話型応答の形式
Solaris 環境は、言語と文化に依存する情報をアプリケーションから分離し、アプリケーションとは別に保存します。したがって、異なる市場ごとにアプリケーションの翻訳や手直し、再コンパイルを行う必要はありません。各言語および慣習に合わせて外部情報を言語対応化するだけで新規市場に参入することができます。
文字処理関数の動作を制御します。
日付と時間の形式を指定します。指定には月の名前、曜日、一般的な完全表記と省略表記も含まれます。
通貨の形式を指定します。これには、そのロケールの通貨記号、千単位の区切り記号、符号の位置、小数位以下の桁数などが含まれます。
小数位記号 (小数点)、千単位の区切り文字、グループ化を指定します。
そのロケールの照合順序や、正規表現の定義を指定します。
翻訳メッセージの言語、および肯定と否定の応答ロケール (yes と no の文字列と表現) を指定します。
言語のレンダリングに関する情報を提供する、配置 (レイアウト) エンジンを指定します。言語のレンダリング (またはテキストレンダリング) は、スクリプトの形状と方向の属性に依存します。