SETLOCALE
Section: Linux Programmer's Manual (3)
Updated: 1999-07-04
Index
JM Home Page
roff page
名前
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)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:02 GMT, November 19, 2007