ロケール
ロケールとはC言語の機能であり、通貨記号、日付/時刻、マルチバイト文字エンコーディングなど、多数の項目を言語や国ごとに設定することができます。
使用しているライブラリ構成に応じて、ロケールサポートのレベルが異なります。ただし、ロケールサポートのレベルが高いほど、コードのサイズも大きくなります。そのため、アプリケーションで必要なサポートのレベルを考慮する必要があります。ランタイムライブラリ構成を参照してください。
DLIBランタイムライブラリは、以下の2つのメインモードで使用できます。
ロケールインタフェースがあるフルライブラリ設定を使用し、実行中にロケールの切替えを可能にします。
C ロケールでアプリケーションを開始します。別のロケールを使用するには、
setlocaleまたはC++ の関連のメカニズムを使用する必要があります。アプリケーションが使用できるロケールはリンク時点で設定されます。ロケールインターフェースを持たない通常のライブラリ構成を使用する場合この構成では、C ロケールがアプリケーションにハードワイヤされます。
注記
マルチバイトがプリントされる場合、DLIB低レベルI/Oインターフェースで__writeの実行が行えることを確認してください。
アプリケーションで使用できるロケールを指定します
注意
[プロジェクト]>[オプション]>[一般オプション]>[ライブラリオプション2]>[ロケールサポート]を選択します。
危険
パラメータとしてロケールのタグのあるリンカオプション ‑‑keepを使用します。例:
‑‑keep _Locale_cs_CZ_iso8859_2
利用可能なロケールは、armディレクトリのSupportedLocales.jsonファイルに一覧表示されます。例:
['Czech language locale for Czech Republic', 'iso8859-2', 'cs_CZ.iso8859-2', '_Locale_cs_CZ_iso8859_2'],
列には、フルロケール名、ロケールのエンコード、省略されたロケール名、およびのリンカオプション‑‑keepにパラメータとして使用されるタグが含まれます。
実行中のロケール変更
アプリケーションの実行中にアプリケーションの正しいロケールを選択するには、標準ライブラリ関数setlocaleを使用します。
setlocale関数では、2つの引数を指定します。最初の引数には、LC_CATEGORYというフォーマットでロケールカテゴリを指定します。2番目の引数には、ロケールを示す文字列を指定します。setlocaleが返した文字列か、以下のフォーマットの文字列を指定します。
lang_REGIONまたは
lang_REGION.encodinglangは言語コード、REGIONは地域を示す修飾子、encodingは使用するマルチバイト文字エンコーディングを示します。使用可能なエンコードは、ISO-8859-1、ISO-8859-2、ISO-8859-4、ISO-8859-5、ISO-8859-7、ISO-8859-8、ISO-8859-9、ISO-8859-15、CP932、およびUTF-8です。
使用可能なロケールとそれらのエンコードの完全な一覧については、armディレクトリにあるSupportedLocales.jsonファイルを参照してください。
例
この例は、ロケール構成シンボルを、フィンランドで使用できるようにスウェーデン語に設定し、UTF8マルチバイト文字エンコーディングに設定します。
setlocale (LC_ALL, "sv_FI.UTF8");