Manpages

名 前

setlocale − 現 在 の ロ ケ ー ル (locale) を 設 定 す る

書 式

#include <locale.h>

char *setlocale(int category, const char *locale);

説 明

setlocale() 関 数 は プ ロ グ ラ ム の カ レ ン ト ロ ケ ー ル を 設 定 し た り 問 い 合 わ せ た り す る の に 用 い ら れ る 。

locale が NULL で な け れ ば 、 プ ロ グ ラ ム の カ レ ン ト ロ ケ ー ル は 引 き 数 に 従 っ て 変 更 さ れ る 。 引 き 数 category は プ ロ グ ラ ム の カ レ ン ト ロ ケ ー ル の ど の 部 分 を 変 更 す る か を 決 め る 。

上 の 表 で ア ス タ リ ス ク が 付 い て い る た カ テ ゴ リ ー は GNU 拡 張 で あ る 。 ロ ケ ー ル の カ テ ゴ リ ー の 詳 細 な 情 報 は locale(7) を 参 照 。 引 き 数 localecategory に 設 定 す る 文 字 列 へ の ポ イ ン タ ー で あ る 。 こ の 文 字 列 は よ く 知 ら れ た 定 数 で あ る "C" や "da_DK" な ど で も 良 い し (以 下 を 参 照 )、 他 の と き に setlocale() を 呼 び 出 し た 際 に 返 さ れ た 、 内 部 用 の 文 字 列 で も 良 い 。

locale が 空 文 字 列 "" の 場 合 、 ロ ケ ー ル の 各 部 分 の 設 定 に は 環 境 変 数 が 参 照 さ れ る 。 そ の 詳 細 は 実 装 依 存 で あ る 。 glibc の 場 合 、 ま ず 最 初 に (ど ん な category に 対 し て も ) 環 境 変 数 LC_ALL が 検 査 さ れ る 。 次 に カ テ ゴ リ ー (category) と 同 じ 名 前 の 環 境 変 数 (上 記 の 表 を 参 照 ) が 検 査 さ れ 、 最 後 に 環 境 変 数 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.

関 連 項 目

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.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。