プログラミングの国際化

ロケールとは

ロケールは、基礎になる言語と使用地域の両方の情報に基づいて構成できます。これら両方を考慮することにより、通貨単位など国ごとに異なる項目を反映させることができます。

アプリケーションプログラムの国際化にとって重要な概念に、プログラムのロケールの概念があります。ロケールは言語環境を示す明示的なモデルであり、定義でもあります。ロケールの概念は明示的に定義されており、ANSI 標準 C のライブラリ定義の中にも組み込まれています。

ロケールは、言語固有の書式やその他の仕様による、いくつかのカテゴリで構成されています。プログラムのロケールは、コードセットや、日付および時間の表記規則、通貨の表記規則、小数の表記規則、照合 (ソート) の順序などを決定します。

ロケール名は言語と地域から成り立っており、コードセットが含まれる場合もあります。なお、地域は不要な場合には省略され、コードセットは通常推定されます。たとえば、ドイツ語は Deutch の略で de、スイス (ドイツ) 語は de_CH (CH は Confederation Helvetica の略) となっています。


注 -

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


通常、ロケール名は環境変数 LANG で指定します。ロケールのカテゴリは LANG に依存しますが、別に設定することも可能です。この場合、ロケールのカテゴリは LANG の設定に優先します。LC_ALL が設定されている場合、LC_ALL の設定は LANG だけでなく、ロケールの個別のカテゴリに優先されます。

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

Solaris の完全ロケールは、列挙された機能をすべて備え、システムメッセージはその言語に言語対応されます。ドイツ語の de ロケールは完全ロケールです。ドイツ語版のシステムメッセージはすべてドイツ語で表示されます。

部分ロケールは列挙された機能を備えていますが、メッセージは言語対応されません。ロシア語の ru ロケールでは、入力、出力、ソートなどは処理されますが、メッセージはロシア語に言語対応されません。このため部分ロケールと呼ばれます。

すべての部分ロケールが英語のメッセージを使用するわけではありません。これは、必要とする言語対応されたメッセージが他の完全ロケールに含まれることがあるからです。たとえば、de_AT はオーストリアの部分ロケールです。オーストリアではドイツ語が話されますが、通貨は異なります。オーストリアのロケールは、ドイツ語の de ロケールのサブセットです。de_AT ロケールはメッセージをドイツ語で表示し、通貨をドイツマルクではなくオーストリアシリングで表示します。