Skip to main content

IAR Embedded Workbench for Arm 9.70.x

ロケール

このセクションの内容:

ロケールとは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.encoding

langは言語コード、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");