Manpages

名 前

locale − 多 言 語 サ ポ ー ト の 解 説

書 式

#include <locale.h>

説 明

ロ ケ ー ル (locale) は 言 語 や 文 化 ル ー ル の 集 合 で あ る 。 こ れ に は 、 メ ッ セ ー ジ 出 力 に 使 用 す る 言 語 、 様 々 な 文 字 集 合 、 表 記 に 関 す る 慣 習 な ど が 含 ま れ る 。 プ ロ グ ラ ム を い ろ い ろ な 文 化 に 移 植 可 能 と す る に は 、 プ ロ グ ラ ム が 自 分 の ロ ケ ー ル を 判 定 し 、 そ れ に 応 じ た 適 切 な 動 作 が で き る 必 要 が あ る 。 ヘ ッ ダ ー フ ァ イ ル <locale.h> に は 、 こ の た め の 便 利 な デ ー タ 型 、 関 数 、 マ ク ロ な ど の 宣 言 が あ る 。 こ の ヘ ッ ダ ー フ ァ イ ル で 宣 言 さ れ て い る 関 数 に は 、 現 在 の ロ ケ ー ル を 設 定 す る setlocale(3) と 、 数 値 の フ ォ ー マ ッ ト 方 法 に つ い て の 情 報 を 取 得 す る localeconv(3) が あ る 。 ロ ケ ー ル 情 報 は 、 プ ロ グ ラ ム が 必 要 と す る と 思 わ れ る い く つ か の カ テ ゴ リ ー に 分 か れ て お り 、 そ れ ら は マ ク ロ と し て 宣 言 さ れ て い る 。 こ れ ら の マ ク ロ を setlocale(3) 関 数 の 最 初 の 引 き 数 に 用 い る と 、 各 カ テ ゴ リ ー を 望 む ロ ケ ー ル に 設 定 で き る 。

LC_ADDRESS (GNU 拡 張 、 glibc 2.2 以 降 ) 場 所 や 地 理 関 連 の 項 目 の 表 示 に 使 用 す る フ ォ ー マ ッ ト (郵 便 番 号 な ど ) に 関 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 を 取 得 で き る 。 _NL_ADDRESS_COUNTRY_NAME (指 定 さ れ た ロ ケ ー ル の 言 語 で の 国 名 ) や _NL_ADDRESS_LANG_NAME (指 定 さ れ た ロ ケ ー ル の 言 語 で の 言 語 名 ) な ど が あ り 、 ド イ ツ 語 ロ ケ ー ル で は "Deutschland" と "Deutsch" と い っ た 文 字 列 が 返 さ れ る 。 他 の 要 素 名 に つ い て は <langinfo.h> に リ ス ト が あ る 。
LC_COLLATE
こ の カ テ ゴ リ ー は 、 並 び 換 え (sorting) や 正 規 表 現 で 使 用 さ れ る 照 合 順 序 (collate) を 制 御 す る 。 そ の 中 に は 、 文 字 の 等 価 ク ラ ス や 複 数 文 字 の 照 合 順 序 も 含 ま れ る 。 こ の ロ ケ ー ル カ テ ゴ リ ー は 、 地 域 的 な ア ル フ ァ ベ ッ ト 文 字 列 の 比 較 に 使 用 す る strcoll(3) 関 数 と strxfrm(3) 関 数 の 動 作 を 変 更 す る 。 例 え ば ド イ ツ 語 の エ ス ツ ェ ッ ト (鋭 い s) は 、 ソ ー ト の 際 "ss" と し て 扱 わ れ る 。
LC_CTYPE
こ の カ テ ゴ リ ー は 、 バ イ ト 列 の 文 字 と し て の 解 釈 (例 え ば 、 シ ン グ ル バ イ ト 文 字 と マ ル チ バ イ ト 文 字 か )、 文 字 ク ラ ス (例 え ば 、 ア ル フ ァ ベ ッ ト か 数 字 か ) や 文 字 ク ラ ス の 動 作 を 決 定 す る 。 こ れ は isupper(3)toupper(3) の よ う な 文 字 の 判 定 ・ 操 作 を す る 関 数 や 、 多 バ イ ト 文 字 を 扱 う mblen(3)wctomb(3) の よ う な 関 数 の 動 作 を 変 更 す る 。
LC_IDENTIFICATION
(GNU 拡 張 、 glibc 2.2 以 降 ) ロ ケ ー ル の メ タ デ ー タ に 関 連 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 を 取 得 で き る 。 _NL_IDENTIFICATION_TITLE (こ の ロ ケ ー ル 文 書 の タ イ ト ル ) や _NL_IDENTIFICATION_TERRITORY (こ の ロ ケ ー ル 文 書 が 適 用 さ れ る 地 理 的 な 範 囲 ) な ど が あ り 、 "English locale for the USA" や "USA" と い っ た 文 字 列 が 返 さ れ る 。 他 の 要 素 名 に つ い て は <langinfo.h> に リ ス ト が あ る 。
LC_MONETARY
こ の カ テ ゴ リ ー は 、 金 額 に 関 連 す る 数 値 の 表 示 方 法 を 決 定 す る 。 localeconv(3) に よ っ て 返 さ れ る 情 報 を 変 更 す る 。 こ れ に は 小 数 点 や 区 切 り コ ン マ の 位 置 な ど 、 数 字 の 表 示 方 法 に 関 す る 詳 細 が 含 ま れ て い る 。 こ の 情 報 は strfmon(3) 関 数 が 内 部 で 使 用 す る 。
LC_MESSAGES
こ の カ テ ゴ リ ー は 、 メ ッ セ ー ジ 表 示 に 使 用 す る 言 語 と 、 肯 定 的 ・ 否 定 的 な 回 答 を ど の よ う に 表 示 す る か に 影 響 す る 。 こ の 情 報 を 簡 単 に 使 用 す る た め に 、 GNU C ラ イ ブ ラ リ に は gettext(3), ngettext(3), rpmatch(3) 関 数 が 含 ま れ て い る 。 GNU gettext フ ァ ミ リ ー に 属 す る 関 数 は 、 カ テ ゴ リ ー が "C" 以 外 の 有 効 な ロ ケ ー ル に 設 定 さ れ て い る 場 合 、 環 境 変 数 LANGUAGE に も 従 う (LANGUAGE は コ ロ ン 区 切 り の ロ ケ ー ル の リ ス ト で あ る )。 こ の カ テ ゴ リ ー は catopen(3) の 動 作 に も 影 響 す る 。
LC_MEASUREMENT
(GNU 拡 張 、 glibc 2.2 以 降 ) ロ ケ ー ル の 測 定 系 (つ ま り 、 メ ー ト ル 法 か ア メ リ カ で よ く 使 わ れ る 単 位 か ) に 関 連 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 で あ る _NL_MEASUREMENT_MEASUREMENT を 取 得 で き る 。 こ の 要 素 は 1 (メ ー ト ル 法 ) か 2 (ア メ リ カ で よ く 使 わ れ る 単 位 ) の 値 が 入 っ た 文 字 列 へ の ポ イ ン タ ー を 返 す 。
LC_NAME
(GNU 拡 張 、 glibc 2.2 以 降 ) 人 に 呼 び か け る 際 に 使 用 さ れ る フ ォ ー マ ッ ト に 関 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 を 取 得 で き る 。 _NL_NAME_NAME_MR (男 性 に 対 す る 一 般 的 な 呼 び 掛 け ) や _NL_NAME_NAME_MS (女 性 に 対 す る 一 般 的 な 呼 び 掛 け ) な ど が あ り 、 ド イ ツ 語 ロ ケ ー ル で は "Herr" や "Frau" と い っ た 文 字 列 が 返 さ れ る 。 他 の 要 素 名 に つ い て は <langinfo.h> に リ ス ト が あ る 。
LC_NUMERIC
こ の カ テ ゴ リ ー は 、 金 額 に 関 係 し な い 数 値 で 使 用 さ れ る 表 示 方 法 を 決 定 す る 。 例 え ば 、 1000 単 位 の 区 切 り 文 字 や 小 数 点 文 字 (ほ と ん ど の 英 語 圏 の 国 で は ピ リ オ ド を 使 用 す る が 、 多 く の 他 の 地 域 で は カ ン マ を 使 用 す る )。 こ の カ テ ゴ リ ー は printf(3), scanf(3), strtod(3) な ど の 関 数 の 動 作 に 影 響 す る 。 こ の 情 報 は localeconv(3) 関 数 で も 読 み 出 す こ と が で き る 。
LC_PAPER
(GNU 拡 張 、 glibc 2.2 以 降 ) 標 準 的 な 紙 の サ イ ズ の 寸 法 (US letter や A4 な ど ) に 関 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 で あ る _NL_PAPER_WIDTH_NL_PAPER_HEIGHT を 取 得 で き る 。 こ の 要 素 は ミ リ メ ー タ ー 単 位 の 寸 法 を 指 定 す る int 値 を 返 す 。
LC_TELEPHONE
(GNU 拡 張 、 glibc 2.2 以 降 ) 電 話 サ ー ビ ス で 使 用 さ れ る フ ォ ー マ ッ ト に 関 す る 設 定 を 変 更 す る 。 こ の 情 報 が 必 要 な ア プ リ ケ ー シ ョ ン は nl_langinfo(3) を 使 っ て 非 標 準 の 要 素 を 取 得 で き る 。 _NL_TELEPHONE_INT_PREFIX (そ の ロ ケ ー ル で の 電 話 番 号 の 前 に 付 く 国 を 示 す 番 号 ) な ど が あ る 。 "49" (ド イ ツ の 場 合 ) と い っ た 文 字 列 が 返 さ れ る 。 他 の 要 素 名 に つ い て は <langinfo.h> に リ ス ト が あ る 。
LC_TIME
こ の カ テ ゴ リ ー は 、 日 付 と 時 刻 の 値 に 使 用 さ れ る 表 示 方 法 を 制 御 す る 。 例 え ば 、 ヨ ー ロ ッ パ の ほ と ん ど で は 24 時 間 時 計 を 使 用 す る が 、 ア メ リ カ で は 12 時 間 時 計 を 使 用 す る 。 こ の カ テ ゴ リ ー の 設 定 は strftime(3)strptime(3) な ど の 関 数 の 動 作 に 影 響 す る 。

LC_ALL 上 記 の 全 て 。

setlocale(3) の 二 番 目 の 引 き 数 が 空 文 字 列 "" の 場 合 、 デ フ ォ ル ト の ロ ケ ー ル は 以 下 の 手 順 で 決 定 す る :

1. 環 境 変 数

LC_ALL が 設 定 さ れ て い る 場 合 に は LC_ALL の 値 が 使 用 さ れ

る 。

2. 上 記 の カ テ ゴ リ ー の ど れ か と 同 じ 名 前 の 環 境 変 数 が 設 定 さ れ て い る 場 合 に は 、 そ の カ テ ゴ リ ー に は そ の 値 が 使 用 さ れ る 。

3. 環 境 変 数

LANG が 設 定 さ れ て い る 場 合 に は LANG の 値 が 使 用 さ れ る 。 地 域 的 な 数 値 フ ォ ー マ ッ ト の 情 報 は localeconv(3) 関 数 に よ っ て 返 さ れ る struct lconv で 得 る こ と が で き 、 こ れ は 以 下 の よ う に 宣 言 さ れ て い る :

struct lconv {

/* (通 貨 以 外 の ) 数 値 情 報 */

char *decimal_point; /* 小 数 点 の 文 字 */
char *thousands_sep; /* 小 数 点 の 左 側 の 数 字 の グ ル ー プ の 区 切 り 文 字
*/
char *grouping; /* そ れ ぞ れ の 要 素 は 各 グ ル ー プ の 数 字 の 個 数 で あ る 。 イ ン デ ッ ク ス 値 が 大 き い ほ ど 、 左 側 の グ ル ー プ を 表 す 。 要 素 の 値 が
CHAR_MAX の 場 合 は 、 最 後 の グ ル ー プ で あ る こ と を 意 味 す る 。 要 素 の 値 が
0 の 場 合 は 、 そ の 要 素 よ り 左 側 の 全 て の 要 素 に 前 の 要 素 と 同 じ 値 を 使 用 す る こ と を 意 味 す る 。
*/

/* 残 り の フ ィ ー ル ド は 通 貨 情 報 用 で あ る */

char *int_curr_symbol; /* 最 初 の 三 つ の 文 字 は ISO 4217 の 通 貨 記 号 。 四 番 目 の 文 字 は 区 切 り 文 字 。 五 番 目 は
' '。 */
char *currency_symbol; /* 地 域 の 通 貨 記 号 */
char *mon_decimal_point; /* 小 数 点 の 文 字 */
char *mon_thousands_sep; /* 上 記 の ’thousands_sep’ と 同 様 */
char *mon_grouping; /* 上 記 の ’grouping’ と 同 様 */
char *positive_sign; /* 正 の 値 の 符 号 */
char *negative_sign; /* 負 の 値 の 符 号 */
char int_frac_digits; /* 国 際 的 な 小 数 部 の 数 字 */
char frac_digits; /* 地 域 の 小 数 部 の 数 字 */
char p_cs_precedes; /* 正 の 値 の 前 に 通 貨 記 号 を 置 く 場 合 は 1, 後 ろ に 置 く 場 合 は
0 */
char p_sep_by_space; /* 正 の 値 と 通 貨 記 号 の 間 に ス ペ ー ス を 入 れ る 場 合 は
1 */
char n_cs_precedes; /* 負 の 値 の 前 に 通 貨 記 号 を 置 く 場 合 は 1, 後 ろ に 置 く 場 合 は
0 */
char n_sep_by_space; /* 負 の 値 と 通 貨 記 号 の 間 に ス ペ ー ス を 入 れ る 場 合 は
1 */
/* 正 と 負 の 符 号 の 位 置 :
0 値 と 通 貨 記 号 を 括 弧 で 囲 む
1 符 号 は 値 と 通 貨 記 号 の 前 に 置 く
2 符 号 は 値 と 通 貨 記 号 の 後 に 置 く
3 符 号 は 通 貨 記 号 の 直 後 に 置 く
4 符 号 は 通 貨 記 号 の 直 前 に 置 く */
char p_sign_posn;
char n_sign_posn; }; ロ ケ ー ル API の POSIX.1−2008 で の 拡 張

POSIX.1−2008 で は 、 ロ ケ ー ル API へ の 多 く の 拡 張 が 標 準 化 さ れ て い る 。 こ れ は GNU C ラ イ ブ ラ リ の バ ー ジ ョ ン 2.3 で 初 め て 登 場 し た 実 装 に 基 づ い て い る 。 こ れ ら の 拡 張 は 、 従 来 の ロ ケ ー ル API が マ ル チ ス レ ッ ド ア プ リ ケ ー シ ョ ン や 複 数 の ロ ケ ー ル を 扱 う 必 要 が あ る ア プ リ ケ ー シ ョ ン と う ま く 組 み 合 わ せ て 使 う こ と が で き な い 問 題 を 解 決 す る た め に 設 計 さ れ た 。 こ の 拡 張 は 、 ロ ケ ー ル オ ブ ジ ェ ク ト の 作 成 、 操 作 の た め の 新 し い 関 数 (newlocale(3), freelocale(3), duplocale(3), uselocale(3)) と サ フ ィ ッ ク ス "_l" が 付 い た 新 し い ラ イ ブ ラ リ 関 数 (toupper_l(3) な ど ) で 構 成 さ れ る 。 新 し い ラ イ ブ ラ リ 関 数 は 、 従 来 の ロ ケ ー ル 依 存 の API (toupper(3) な ど ) を 関 数 実 行 時 に 適 用 す る ロ ケ ー ル オ ブ ジ ェ ク ト の 指 定 が で き る よ う に 拡 張 し た も の で あ る 。

環 境 変 数

以 下 の 環 境 変 数 が newlocale(3)setlocale(3) で 使 用 さ れ る 。 し た が っ て 、 特 権 を 持 た な い ロ ケ ー ル を 参 照 す る す べ て の プ ロ グ ラ ム に 影 響 が あ る 。

LOCPATH コ ロ ン (':') 区 切 り の 、 ロ ケ ー ル デ ー タ を 検 索 す る パ ス 名 の リ ス ト 。 こ の 変 数 が 設 定 さ れ る と 、 LOCPATH と シ ス テ ム の デ フ ォ ル ト の ロ ケ ー ル デ ー タ の パ ス に あ る 、 個 々 の コ ン パ イ ル さ れ た ロ ケ ー ル デ ー タ フ ァ イ ル だ け が 使 用 さ れ る 。 ロ ケ ー ル ア ー カ イ ブ は 利 用 可 能 で も 使 用 さ れ な い (localedef(1) 参 照 )。 個 々 の コ ン パ イ ル さ れ た ロ ケ ー ル デ ー タ フ ァ イ ル は 、 現 在 使 用 さ れ て い る ロ ケ ー ル に 応 じ た サ ブ デ ィ レ ク ト リ か ら 検 索 さ れ る 。 例 え ば 、 あ る カ テ ゴ リ ー で en_GB.UTF−8 が 使 用 さ れ て い る 場 合 、 サ ブ デ ィ レ ク ト リ en_GB.UTF−8, en_GB.utf8, en_GB, en.UTF−8, en.utf8, en が こ の 順 序 で 検 索 さ れ る 。

フ ァ イ ル

/usr/lib/locale/locale−archive 通 常 の デ フ ォ ル ト の ロ ケ ー ル ア ー カ イ ブ フ ァ イ ル
/usr/lib/locale
コ ン パ イ ル さ れ た ロ ケ ー ル フ ァ イ ル の 通 常 の デ フ ォ ル ト の パ ス 。

準 拠

POSIX.1−2001.

関 連 項 目

locale(1), localedef(1), catopen(3), gettext(3), localeconv(3), mbstowcs(3), newlocale(3), ngettext(3), nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3), strftime(3), strxfrm(3), uselocale(3), wcstombs(3), locale(5), charsets(7), unicode(7), utf−8(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。