LOCALE
Section: Linux Programmer's Manual(Linux程序员手册) (7)
Updated: 1993年4月24日
Index
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@ccidnet.com>
[中文版最新更新]
2001/07/19
《中国linux论坛man手册页翻译计划》:
http://cmpp.linuxforum.net
Index
- NAME(名称)
-
- SYNOPSIS(总览)
-
- DESCRIPTION(描述)
-
- CONFORMS TO(遵循规则)
-
- SEE ALSO(另见)
-
- [中文版维护人]
-
- [中文版最新更新]
-
- 《中国linux论坛man手册页翻译计划》:
-
This document was created by
man2html,
using the manual pages.
Time: GMT, January 14, 2004