Provided by: manpages-ja_0.5.0.0.20161015+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/ に書かれている。