Provided by: manpages-ja_0.5.0.0.20161015+dfsg-1_all bug

名前

       locale - 多言語サポートの解説

書式

       #include <locale.h>

説明

       ロケール  (locale) は言語や文化ルールの集合である。 これには、メッセージ出力に使用する言語、 様々な文字集
       合、 表記に関する慣習などが含まれる。 プログラムをいろいろな文化に移植可能とするには、 プログラムが自分の
       ロケールを判定し、 それに応じた適切な動作ができる必要がある。

       ヘッダーファイル <locale.h> には、 このための便利なデータ型、 関数、 マクロなどの宣言がある。

       このヘッダーファイルで宣言されている関数には、 現在のロケールを設定する setlocale(3) と、数値のフォーマッ
       ト方法についての情報を取得する localeconv(3)  がある。

       ロケール情報は、 プログラムが必要とすると思われるいくつかのカテゴリーに分かれており、  それらはマクロとし
       て宣言されている。  これらのマクロを setlocale(3) 関数の最初の引き数に用いると、 各カテゴリーを望むロケー
       ルに設定できる。

       LC_ADDRESS (GNU 拡張、 glibc 2.2 以降)
              場所や地理関連の項目の表示に使用するフォーマット (郵便番号など) に関する設定を変更する。  この情報
              が必要なアプリケーションは            nl_langinfo(3)            を使って非標準の要素を取得できる。
              _NL_ADDRESS_COUNTRY_NAME (指定されたロケールの言語での国名) や _NL_ADDRESS_LANG_NAME (指定されたロ
              ケールの言語での言語名)  などがあり、 ドイツ語ロケールでは "Deutschland" と "Deutsch" といった文字
              列が返される。 他の要素名については <langinfo.h> にリストがある。

       LC_COLLATE
              このカテゴリーは、 並び換え (sorting) や正規表現で使用される照合順序 (collate) を制御する。 その中
              には、  文字の等価クラスや複数文字の照合順序も含まれる。  このロケールカテゴリーは、  地域的なアル
              ファベット文字列の比較に使用する strcoll(3) 関数と strxfrm(3) 関数の動作を変更する。例えばドイツ語
              のエスツェット (鋭い s)  は、ソートの際 "ss" として扱われる。

       LC_CTYPE
              このカテゴリーは、  バイト列の文字としての解釈  (例えば、シングルバイト文字とマルチバイト文字か)、
              文字クラス (例えば、アルファベットか数字か) や文字クラスの動作を決定する。 これは  isupper(3)   や
              toupper(3) のような文字の判定・操作をする関数や、多バイト文字を扱う mblen(3)  や wctomb(3)  のよう
              な関数の動作を変更する。

       LC_IDENTIFICATION (GNU 拡張、 glibc 2.2 以降)
              ロケールのメタデータに関連する設定を変更する。  この情報が必要なアプリケーションは  nl_langinfo(3)
              を使って非標準の要素を取得できる。    _NL_IDENTIFICATION_TITLE   (このロケール文書のタイトル)   や
              _NL_IDENTIFICATION_TERRITORY  (このロケール文書が適用される地理的な範囲)   などがあり、   "English
              locale for the USA" や "USA" といった文字列が返される。 他の要素名については <langinfo.h> にリスト
              がある。

       LC_MONETARY
              このカテゴリーは、 金額に関連する数値の表示方法を決定する。 localeconv(3)   によって返される情報を
              変更する。 これには小数点や区切りコンマの位置など、 数字の表示方法に関する詳細が含まれている。この
              情報は strfmon(3)  関数が内部で使用する。

       LC_MESSAGES
              このカテゴリーは、 メッセージ表示に使用する言語と、 肯定的・否定的な回答をどのように表示するかに影
              響する。 この情報を簡単に使用するために、 GNU C ライブラリには gettext(3), ngettext(3), rpmatch(3)
              関数が含まれている。 GNU gettext ファミリーに属する関数は、カテゴリーが "C" 以外の有効なロケールに
              設定されている場合、環境変数 LANGUAGE にも従う (LANGUAGE はコロン区切りのロケールのリストである)。
              このカテゴリーは catopen(3) の動作にも影響する。

       LC_MEASUREMENT (GNU 拡張、 glibc 2.2 以降)
              ロケールの測定系 (つまり、メートル法かアメリカでよく使われる単位か) に関連する設定を変更する。  こ
              の情報が必要なアプリケーションは             nl_langinfo(3)             を使って非標準の要素である
              _NL_MEASUREMENT_MEASUREMENT を取得できる。 この要素は 1 (メートル法) か 2  (アメリカでよく使われる
              単位) の値が入った文字列へのポインターを返す。

       LC_NAME (GNU 拡張、 glibc 2.2 以降)
              人に呼びかける際に使用されるフォーマットに関する設定を変更する。  この情報が必要なアプリケーション
              は nl_langinfo(3) を使って非標準の要素を取得できる。 _NL_NAME_NAME_MR  (男性に対する一般的な呼び掛
              け) や _NL_NAME_NAME_MS (女性に対する一般的な呼び掛け) などがあり、 ドイツ語ロケールでは "Herr" や
              "Frau" といった文字列が返される。 他の要素名については <langinfo.h> にリストがある。

       LC_NUMERIC
              このカテゴリーは、 金額に関係しない数値で使用される表示方法を決定する。 例えば、 1000 単位の区切り
              文字や小数点文字  (ほとんどの英語圏の国ではピリオドを使用するが、 多くの他の地域ではカンマを使用す
              る)。 このカテゴリーは  printf(3),  scanf(3),  strtod(3)  などの関数の動作に影響する。  この情報は
              localeconv(3) 関数でも読み出すことができる。

       LC_PAPER (GNU 拡張、 glibc 2.2 以降)
              標準的な紙のサイズの寸法  (US  letter  や A4 など) に関する設定を変更する。 この情報が必要なアプリ
              ケーションは nl_langinfo(3) を使って非標準の要素である _NL_PAPER_WIDTH_NL_PAPER_HEIGHT  を取得
              できる。 この要素はミリメーター単位の寸法を指定する int 値を返す。

       LC_TELEPHONE (GNU 拡張、 glibc 2.2 以降)
              電話サービスで使用されるフォーマットに関する設定を変更する。    この情報が必要なアプリケーションは
              nl_langinfo(3) を使って非標準の要素を取得できる。 _NL_TELEPHONE_INT_PREFIX (そのロケールでの電話番
              号の前に付く国を示す番号) などがある。 "49" (ドイツの場合) といった文字列が返される。 他の要素名に
              ついては <langinfo.h> にリストがある。

       LC_TIME
              このカテゴリーは、 日付と時刻の値に使用される表示方法を制御する。 例えば、  ヨーロッパのほとんどで
              は   24   時間時計を使用するが、   アメリカでは   12  時間時計を使用する。  このカテゴリーの設定は
              strftime(3) や strptime(3) などの関数の動作に影響する。

       LC_ALL 上記の全て。

       setlocale(3)  の二番目の引き数が空文字列 "" の場合、 デフォルトのロケールは以下の手順で決定する:

       1.     環境変数 LC_ALL が設定されている場合には LC_ALL の値が使用される。

       2.     上記のカテゴリーのどれかと同じ名前の環境変数が設定されている場合には、  そのカテゴリーにはその値が
              使用される。

       3.     環境変数 LANG が設定されている場合には LANG の値が使用される。

       地域的な数値フォーマットの情報は  localeconv(3)  関数によって返される struct lconv で得ることができ、これ
       は以下のように宣言されている:

         struct lconv {

             /* (通貨以外の) 数値情報 */

             char *decimal_point;     /* 小数点の文字 */
             char *thousands_sep;     /* 小数点の左側の数字のグループの
                                         区切り文字 */
             char *grouping; /* それぞれの要素は各グループの数字の個数である。
                                インデックス値が大きいほど、左側のグループを表す。
                                要素の値が CHAR_MAX の場合は、最後のグループで
                                あることを意味する。要素の値が 0 の場合は、
                                その要素より左側の全ての要素に前の要素と同じ値を
                                使用することを意味する。 */

             /* 残りのフィールドは通貨情報用である */

             char *int_curr_symbol;   /* 最初の三つの文字は ISO 4217 の通貨記号。
                                         四番目の文字は区切り文字。
                                         五番目は ' '。 */
             char *currency_symbol;   /* 地域の通貨記号 */
             char *mon_decimal_point; /* 小数点の文字 */
             char *mon_thousands_sep; /* 上記の `thousands_sep' と同様 */
             char *mon_grouping;      /* 上記の `grouping' と同様 */
             char *positive_sign;     /* 正の値の符号 */
             char *negative_sign;     /* 負の値の符号 */
             char  int_frac_digits;   /* 国際的な小数部の数字 */
             char  frac_digits;       /* 地域の小数部の数字 */
             char  p_cs_precedes;     /* 正の値の前に通貨記号を置く場合は 1,
                                         後ろに置く場合は 0 */
             char  p_sep_by_space;    /* 正の値と通貨記号の間にスペースを
                                         入れる場合は 1 */
             char  n_cs_precedes;     /* 負の値の前に通貨記号を置く場合は 1,
                                         後ろに置く場合は 0 */
             char  n_sep_by_space;    /* 負の値と通貨記号の間にスペースを
                                         入れる場合は 1 */
             /* 正と負の符号の位置:
                0 値と通貨記号を括弧で囲む
                1 符号は値と通貨記号の前に置く
                2 符号は値と通貨記号の後に置く
                3 符号は通貨記号の直後に置く
                4 符号は通貨記号の直前に置く    */
             char  p_sign_posn;
             char  n_sign_posn;
         };

   ロケール API  POSIX.1-2008 での拡張
       POSIX.1-2008 では、 ロケール API への多くの拡張が標準化されている。 これは GNU  C  ライブラリのバージョン
       2.3  で初めて登場した実装に基づいている。  これらの拡張は、 従来のロケール API がマルチスレッドアプリケー
       ションや複数のロケールを扱う必要があるアプリケーションとうまく組み合わせて使うことができない問題を解決す
       るために設計された。

       この拡張は、     ロケールオブジェクトの作成、操作のための新しい関数     (newlocale(3),     freelocale(3),
       duplocale(3), uselocale(3)) とサフィックス "_l" が付いた新しいライブラリ関数 (toupper_l(3) など) で構成さ
       れる。 新しいライブラリ関数は、 従来のロケール依存の API (toupper(3) など) を関数実行時に適用するロケール
       オブジェクトの指定ができるように拡張したものである。

環境変数

       以下の環境変数が newlocale(3) と setlocale(3) で使用される。 したがって、  特権を持たないロケールを参照す
       るすべてのプログラムに影響がある。

       LOCPATH
              コロン  (':') 区切りの、 ロケールデータを検索するパス名のリスト。 この変数が設定されると、 LOCPATH
              とシステムのデフォルトのロケールデータのパスにある、  個々のコンパイルされたロケールデータファイル
              だけが使用される。 ロケールアーカイブは利用可能でも使用されない (localedef(1) 参照)。 個々のコンパ
              イルされたロケールデータファイルは、  現在使用されているロケールに応じたサブディレクトリから検索さ
              れる。  例えば、 あるカテゴリーで en_GB.UTF-8 が使用されている場合、 サブディレクトリ en_GB.UTF-8,
              en_GB.utf8, en_GB, en.UTF-8, en.utf8, en がこの順序で検索される。

ファイル

       /usr/lib/locale/locale-archive
              通常のデフォルトのロケールアーカイブファイル

       /usr/lib/locale
              コンパイルされたロケールファイルの通常のデフォルトのパス。

準拠

       POSIX.1-2001.

関連項目

       locale(1), localedef(1), catopen(3), gettext(3), localeconv(3), mbstowcs(3),  newlocale(3),  ngettext(3),
       nl_langinfo(3),  rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3), uselocale(3),
       wcstombs(3), locale(5), charsets(7), unicode(7), utf-8(7)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。