setlocale - 現在のロケール (locale)
を設定する
#include <locale.h>
char *setlocale(int category, const char *locale);
setlocale()
関数はプログラムのカレントロケールを設定したり
問い合わせたりするのに用いられる。
locale が NULL
でなければ、プログラムのカレントロケールは引数に従って変更される。
引数
category
はプログラムのカレントロケールのどの部分を変更するかを決める。
カテゴリー |
制御対象 |
LC_ALL |
全てのロケール |
LC_ADDRESS |
住所と地理関連の
要素のフォーマット
(*) |
LC_COLLATE |
文字の照合順序 |
LC_CTYPE |
文字の分類 |
LC_IDENTIFICATION |
ロケールの説明メタデータ
(*) |
LC_MEASUREMENT |
単位系に関する設定
(メートル法か US
由来の単位系) (*) |
LC_MESSAGES |
地域化可能な自然言語メッセージ |
LC_MONETARY |
金額の表示方法 |
LC_NAME |
人へのあいさつの言葉 |
LC_NUMERIC |
金額以外の数値の表示方法 |
LC_PAPER |
標準の紙のサイズに関する設定
(*) |
LC_TELEPHONE |
電話サービスで使用されるフォーマット
(*) |
LC_TIME |
日付と時刻の表示方法 |
上の表でアスタリスクが付い
ているたカテゴリーは
GNU 拡張である。
ロケールのカテゴリーの詳細な情報は
locale(7) を参照。
引数
locale は
category
に設定する文字列へのポインターである。
この文字列はよく知られた定数である
"C" や "da_DK"
などでも良いし
(以下を参照)、他のときに
setlocale()
を呼び出した際に返された、内部用の文字列でも良い。
locale が空文字列
""
の場合、ロケールの各部分の設定には環境変数が参照される。
その詳細は実装依存である。
glibc の場合、まず最初に
(どんな
category
に対しても) 環境変数
LC_ALL が検査される。
次にカテゴリー (category)
と同じ名前の環境変数
(上記の表を参照)
が検査され、最後に環境変数
LANG が検査される。
最初に見つかった環境変数を使用する。
その値がロケール指定として正しくなければ、ロケールは変更されず、
setlocale() は NULL を返す。
The locale
"C" or
"POSIX" is a portable
locale; it exists on all conforming systems.
A locale name is typically of the form
language[_
territory][.
codeset][@
modifier], where
language is an ISO 639 language code,
territory is an ISO 3166
country code, and
codeset is a character set or encoding identifier
like
ISO-8859-1 or
UTF-8. For a list of all supported locales,
try "locale -a" (see
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 になる。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
setlocale() |
Thread safety |
MT-Unsafe const:locale env |
POSIX.1-2001, POSIX.1-2008, C89, C99.
The C standards specify only the categories
LC_ALL,
LC_COLLATE,
LC_CTYPE,
LC_MONETARY,
LC_NUMERIC, and
LC_TIME.
POSIX.1 adds
LC_MESSAGES. The remaining categories are GNU extensions.
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
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。