SETLOCALE - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
setlocale-设置当前语言环境
语法
#include <locale.h> char *setlocale(int category, const char *locale);
说明
setlocale()函数用于设置或查询程序的当前语言环境。
如果locale不为NULL,则根据参数修改程序的当前语言环境。参数类别确定应修改程序当前语言环境的哪些部分。
Category | Governs |
LC_ALL | All of the locale |
LC_ADDRESS | Formatting of addresses and geography-related items (*) |
LC_COLLATE | String collation |
LC_CTYPE | Character classification |
LC_IDENTIFICATION | Metadata describing the locale (*) |
LC_MEASUREMENT | Settings related to measurements (metric versus US customary) (*) |
LC_MESSAGES | Localizable natural-language messages |
LC_MONETARY | Formatting of monetary values |
LC_NAME | Formatting of salutations for persons (*) |
LC_NUMERIC | Formatting of nonmonetary numeric values |
LC_PAPER | Settings related to the standard paper size (*) |
LC_TELEPHONE | Formats to be used with telephone services (*) |
LC_TIME | Formatting of date and time values |
上表中标有星号的类别是GNU扩展。有关这些语言环境类别的更多信息,请参见locale(7)。
参数语言环境是指向包含所需类别设置的字符串的指针。这样的字符串要么是众所周知的常量,例如" C"或" da_DK"(请参见下文),要么是另一个setlocale()调用返回的不透明字符串。
如果locale是一个空字符串,则根据环境变量设置应该修改的语言环境的每个部分。详细信息取决于实现。对于glibc,首先检查环境变量LC_ALL(与类别无关),然后检查与类别名称相同的环境变量(请参见上表),最后检查环境变量LANG。使用第一个现有环境变量。如果其值不是有效的语言环境规范,则该语言环境不变,并且setlocale()返回NULL。
语言环境C或POSIX是可移植的语言环境;它存在于所有符合标准的系统中。
语言环境名称通常采用语言[_区域] [。codeset] [@ modifier]的形式,其中语言是ISO 639语言代码,区域是ISO 3166国家/地区代码,代码集是字符集或编码标识符,例如ISO -8859-1或UTF-8。有关所有支持的语言环境的列表,请尝试" locale -a"(请参阅locale(1))。
如果locale为NULL,则仅查询当前语言环境,而不修改。
在启动主程序时,默认选择便携式C语言环境。可以通过调用以下程序使程序可移植到所有地区:
setlocale(LC_ALL, "");
程序初始化后,通过使用localeconv(3)调用返回的值来获取与语言环境相关的信息,如果MB_CUR_MAX> 1,则使用多字节和宽字符函数进行文本处理,并使用strcoll(3),wcscoll(3)或strxfrm(3),wcsxfrm(3)比较字符串。
返回值
成功调用setlocale()会返回一个与语言环境集相对应的不透明字符串。该字符串可以在静态存储器中分配。返回的字符串使得使用该字符串及其关联的类别进行的后续调用将恢复该进程的语言环境的该部分。如果无法兑现请求,则返回值为NULL。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
setlocale() | Thread safety | MT-Unsafe const:locale env |
遵循规范
POSIX.1-2001,POSIX.1-2008,C89,C99。
C标准仅指定类别LC_ALL,LC_COLLATE,LC_CTYPE,LC_MONETARY,LC_NUMERIC和LC_TIME。 POSIX.1添加LC_MESSAGES。其余类别是GNU扩展。
另外参见
locale(1),localedef(1),isalpha(3),localeconv(3),nl_langinfo(3),rpmatch(3),strcoll(3),strftime(3),字符集(7),locale(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。