Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       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
              時刻と日付けの書式

       引き数 localecategory に設定する文字列へのポインタである。  この文字列はよく知られた定
       数である  "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 の国名コードである。
       codesetISO-8859-1UTF-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.65 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。