Provided by: manpages-ja_0.5.0.0.20180315+dfsg-1_all 

名前
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/ に書かれている。
Linux 2014-12-31 LOCALE(7)