Manpages

NAME(名 称 )

locale - 描 述 多 语 言 支 持

SYNOPSIS(总 览 )

#include <locale.h>

DESCRIPTION(描 述 )

locale 就 是 一 系 列 语 言 文 化 规 则 . 它 包 括 如 下 一 些 方 面 : 讯 息 的 语 言 , 不 同 字 符 设 置 , 文 字 惯 例 , 等 等 . 程 序 需 要 能 够 判 断 其 locale 并 根 据 适 合 于 不 同 文 化 的 要 求 来 运 行 . 头 文 件 <locale.h> 声 明 了 用 于 该 项 作 业 中 的 数 据 类 型 ,函 数 和 宏 . 它 声 明 的 函 数 有 : setlocale() 用 来 设 置 当 前 locale, localeconv() 用 来 获 得 数 字 格 式 方 面 的 信 息 . 程 序 可 能 需 要 的 本 地 化 信 息 会 有 不 同 的 种 类 ; 它 们 都 以 宏 的 方 式 声 明 把 它 们 当 做 setlocale() 的 第 一 个 参 数 来 用 , 就 可 以 把 其 中 一 个 设 置 为 需 要 的 locale:
LC_COLLATE
这 用 来 修 改 函 数 strcoll()strxfrm() 的 执 行 方 式 , 其 中 strxfrm() 函 数 用 来 以 本 地 化 字 母 表 进 行 字 符 串 比 较 . 例 如 , 德 国 升 半 音 的 s 排 序 为 "ss".
LC_CTYPE
修 改 字 符 处 理 分 类 函 数 如 isupper()toupper() 的 执 行 方 式 , 还 修 改 多 字 节 字 符 函 数 如 mblen() 或 者 wctomb() 的 执 行 方 式 .
LC_MONETARY
修 改 由 localeconv() 返 回 的 信 息 , 这 些 信 息 描 述 了 数 字 , 以 及 诸 如 小 数 点 和 千 进 位 逗 号 之 类 输 出 的 常 见 格 式 的 细 节 . 这 些 信 息 由 函 数 strfmon() 在 内 部 调 用 .
LC_MESSAGES
修 改 显 示 的 语 言 信 息 以 及 正 值 和 负 值 的 表 达 方 式 . GNU C-library包 含 : rpmatch() 函 数 用 于 方 便 地 使 用 这 些 信 息 .
LC_NUMERIC
在 考 虑 使 用 locale 设 置 时 ,修 改 printf()scanf() 函 数 族 使 用 的 信 息 .该 信 息 也 可 以 由 localeconv() 函 数 读 取 .
LC_TIME
修 改 strftime() 函 数 的 执 行 方 式 以 显 示 适 于 当 地 格 式 的 当 前 时 间 ; 例 如 ,欧 洲 的 绝 大 部 分 地 区 使 用 的 是 24 小 时 的 时 钟 , 而 美 国 则 是 12 小 时 的 时 钟 .

LC_ALL 上 述 所 有 的

.

如 果 setlocale() 的 第 二 个 参 数 为 空 , 则 设 置 "", 为 默 认 的 locale,它 通 过 以 下 几 步 来 确 定 :

1. 如 果 有 非 空 的 环 境 变 量

LC_ALL, 则 使 用 LC_ALL 的 值 .

2. 如 果 存 在 一 个 与 上 述 列 出

的 种 类 同 名 的 环 境 变 量 并 且 其 不 为 空 , 则 使 用 该 分 类 的 值 .

3. 如 果 有 非

空 的 环 境 变 量 LANG, 则 使 用 LANG 的 值 . 关 于 本 地 数 字 格 式 的 值 用 于 由 localeconv() 函 数 返 回 的 struct lconv , 其 有 以 下 声 明 :

struct lconv
{
/* 数 码 (非 货 币 形 式 )信 息 . */

char *decimal_point; /* 小 数 点 字 符 . */
char *thousands_sep; /* 千 数 的 分 隔 符 . */
/* 每 个 元 素 就 是 每 组 的 阿 拉 伯 数 字 ;指 数 越 高 的 元 素 在 越 左 边 .一 个 值 为 CHAR_MAX的 元 素 表 示 不 需 继 续 分 组 了
.一 个 值 为 0的 元 素 表 示 前 面 的 字 符 用 于 所 有 更 左 边 的 组 . */
char *grouping;

/* 货 币 信 息 . */

/* 前 三 个 字 符 是 ISO 4217定 义 的 流 通 符 号 . 第 四 个 字 符 是 分 隔 符
. 第 五 个 字 符 是 ’ ’. */
char *int_curr_symbol;
char *currency_symbol; /* 当 地 货 币 符 号 . */
char *mon_decimal_point; /* 小 数 点 字 符 . */
char *mon_thousands_sep; /* 千 数 的 分 隔 符 . */
char *mon_grouping; /* 如 前 述 的 ’分 组 ’元 素 . */
char *positive_sign; /* 正 值 符 号 . */
char *negative_sign; /* 负 值 符 号 . */
char int_frac_digits; /* 国 际 通 用 的 数 字 . */
char frac_digits; /* 本 地 使 用 的 数 字 . */
/* 如 果 currency_symbol后 跟 着 一 个 正 值 则 为 1,如 果 顺 序 相 反 为 0. */
char p_cs_precedes;
/* 如 果 在 currency_symbol和 正 值 之 间 是 一 个 空 格 则 为 1. */
char p_sep_by_space;
/* 如 果 currency_symbol后 跟 着 一 个 负 值 则 为 1,如 果 顺 序 相 反 为 0. */
char n_cs_precedes;
/* 如 果 在 currency_symbol和 正 值 之 间 是 一 个 空 格 则 为 1. */
char n_sep_by_space;
/* 正 值 和 负 值 符 号 位 置 : 数 量 值 和
currency_symbol在 圆 括 号 内 则 为 0. 符 号 字 符 串 先 于 数 量 值 和
currency_symbol则 为 1. 符 号 字 符 串 在 数 量 值 和
currency_symbol之 后 则 为 2. 符 号 字 符 串 后 紧 跟 数 量 值 和
currency_symbol则 为 3. 符 号 字 符 串 紧 跟 在 数 量 值 和
currency_symbol之 后 则 为 4. */
char p_sign_posn;
char n_sign_posn; };

CONFORMS TO(遵 循 规 则 )

POSIX.1

SEE ALSO(另 见 )

setlocale(3), localeconv(3), locale(1), localedef(1), rpmatch(3), strfmon(3), strcoll(3), strxfrm(3), strftime(3)

[中 文 版 维 护 人 ]

riser <boomer [AT] ccidnet.com>

[中 文 版 最 新 更 新 ]

2001/07/19

《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh