Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
setlocale - 現在のロケール (locale) を設定する
書式
#include <locale.h> char *setlocale(int category, const char *locale);
説明
setlocale() 関数はプログラムのカレントロケールを設定したり 問い合わせたりするのに用いられ る。 locale が NULL でなければ、プログラムのカレントロケールは引き数に従って変更される。 引き数 category はプログラムのカレントロケールのどの部分を変更するかを決める。 LC_ALL 全てのロケール LC_COLLATE 正規表現のマッチング (範囲表現と等価クラスのマッチングを決定する) と文字列の照合 (collation) LC_CTYPE 正規表現のマッチング、文字の分類、文字の変換、大文字小文字比較、 ワイド文字関数 LC_MESSAGES 地域化可能な自然言語メッセージ LC_MONETARY 通貨の書式 LC_NUMERIC 数値の書式 (小数点や 3 桁ごとの区切り) LC_TIME 時刻と日付けの書式 引き数 locale は category に設定する文字列へのポインタである。 この文字列はよく知られた定 数である "C" や "da_DK" などでも良いし (以下を参照)、他のときに setlocale() を呼び出した 際に返された、内部用の文字列でも良い。 locale が "" の場合、ロケールの各部分の設定には環境変数が参照される。 その詳細は実装依存で ある。 glibc の場合、まず最初に (どんな category に対しても) 環境変数 LC_ALL が検査され る。 次にカテゴリ (category) と同じ名前の環境変数 (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) が検査され、最後に環境変数 LANG が検査される。 最初に見 つかった環境変数を使用する。 その値がロケール指定として正しくなければ、ロケールは変更され ず、 setlocale() は NULL を返す。 "C" ロケールや "POSIX" ロケールは互換性のあるロケールである。 この LC_CTYPE の部分は 7 ビット ASCII 文字集合に相当している。 ロケール名の書式は、通常 language[_territory][.codeset][@modifier] というものである。 ここ で language は ISO 639 の言語コードである。 territory は ISO 3166 の国名コードである。 codeset は ISO-8859-1 や UTF-8 のような文字集合や文字符号化識別子である。 サポートされてい るロケールの一覧を得るには、 "locale -a" を実行してみよ (locale(1) 参照のこと)。 locale が NULL ならば、現在のロケールを問い合わせるのみで変更はしない。 main プログラムの起動時には、 互換性のある "C" ロケールがデフォルトで選択される。 プログラ ムをすべてのロケールに対して互換にしたければ、 プログラムの初期化の後に setlocale(LC_ALL, ""); を呼び出し、ロケール依存の情報には localeconv(3) の返り値を用い、 MB_CUR_MAX > 1 の場合に は文字列の操作には多バイト文字、ワイド文字関数を使用し、 文字列の比較には strcoll(3), wcscoll(3) や strxfrm(3), wcsxfrm(3) を用いる。
返り値
setlocale() の呼び出しに成功すると、 そのロケール集合に対応する内部文字列 (opaque string) を返す。 この文字列は静的な記憶域に割り当てられているかもしれない。 この返って来た文字列 を、カテゴリ指定と共に、 のちの setlocale の呼び出しに指定すれば、 プロセスのその部分のロ ケールが復元される。 設定に失敗した場合には、返り値は NULL になる。
準拠
C89, C99, POSIX.1-2001.
注意
Linux (というか glibc) は互換性のあるロケールとして "C" と "POSIX" をサポートしている。 古 きよき時代には (例えば libc-4.5.21 と libc-4.6.27 などでは)、 European Latin-1 向けに "ISO-8859-1" ロケールがサポートされており、 ロシア語 (Russian) 向けに "KOI-8" (より正確に は "koi-8r") ロケールがサポートされていた。 従って環境変数を LC_CTYPE=ISO-8859-1 と指定す るだけで isprint(3) は正しい答えを返した。 最近では、英語以外を使うヨーロッパ人はもう 少々やっかいな作業を必要とし、 実際のロケールファイルをインストールしなければならない。
関連項目
locale(1), localedef(1), isalpha(3), localeconv(3), nl_langinfo(3), rpmatch(3), strcoll(3), strftime(3), charsets(7), locale(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。