Provided by: manpages-ja_0.5.0.0.20221215+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
              This  category determines the interpretation of byte sequences as characters (e.g.,
              single versus multibyte characters), character classifications (e.g., alphabetic or
              digit),  and  the  behavior  of character classes.  On glibc systems, this category
              also determines the character transliteration rules for iconv(1)  and iconv(3).  It
              changes  the  behavior of the character handling and classification functions, such
              as isupper(3)  and toupper(3),  and  the  multibyte  character  functions  such  as
              mblen(3)  or 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;     /* Radix character */
               char *thousands_sep;     /* Separator for digit groups to left
                                           of radix character */
               char *grouping;     /* Each element is the number of digits in
                                      a group; elements with higher indices
                                      are further left.  An element with value
                                      CHAR_MAX means that no further grouping
                                      is done.  An element with value 0 means
                                      that the previous element is used for
                                      all groups further left. */

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

               char *int_curr_symbol;   /* First three chars are a currency
                                           symbol from ISO 4217.  Fourth char
                                           is the separator.  Fifth char
                                           is '\0'. */
               char *currency_symbol;   /* Local currency symbol */
               char *mon_decimal_point; /* Radix character */
               char *mon_thousands_sep; /* Like thousands_sep above */
               char *mon_grouping;      /* Like grouping above */
               char *positive_sign;     /* Sign for positive values */
               char *negative_sign;     /* Sign for negative values */
               char  int_frac_digits;   /* International fractional digits */
               char  frac_digits;       /* Local fractional digits */
               char  p_cs_precedes;     /* 1 if currency_symbol precedes a
                                           positive value, 0 if succeeds */
               char  p_sep_by_space;    /* 1 if a space separates
                                           currency_symbol from a positive
                                           value */
               char  n_cs_precedes;     /* 1 if currency_symbol precedes a
                                           negative value, 0 if succeeds */
               char  n_sep_by_space;    /* 1 if a space separates
                                           currency_symbol from a negative
                                           value */
               /* Positive and negative sign positions:
                  0 Parentheses surround the quantity and currency_symbol.
                  1 The sign string precedes the quantity and currency_symbol.
                  2 The sign string succeeds the quantity and currency_symbol.
                  3 The sign string immediately precedes the currency_symbol.
                  4 The sign string immediately succeeds the currency_symbol. */
               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.

関連項目

       iconv(1),   locale(1),  localedef(1),  catopen(3),  gettext(3),  iconv(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 プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。