C 库函数 - setlocale()

描述

C 库函数 char setlocale(int category, const char locale) 设置或读取地域化信息。

声明

下面是 setlocale() 函数的声明。

  1. char *setlocale(int category, const char *locale)

参数

  • category — 这是一个已命名的常量,指定了受区域设置影响的函数类别。
    • LC_ALL 包括下面的所有选项。
    • LC_COLLATE 字符串比较。参见 strcoll()。
    • LC_CTYPE 字符分类和转换。例如 strtoupper()。
    • LC_MONETARY 货币格式,针对 localeconv()。
    • LC_NUMERIC 小数点分隔符,针对 localeconv()。
    • LC_TIME 日期和时间格式,针对 strftime()。
    • LC_MESSAGES 系统响应。
  • locale — 如果 locale 是 NULL 或空字符串 "",则区域名称将根据环境变量值来设置,其名称与上述的类别名称相同。

返回值

如果成功调用 setlocale(),则返回一个对应于区域设置的不透明的字符串。如果请求无效,则返回值是 NULL。

实例

下面的实例演示了 setlocale() 函数的用法。

  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. int main ()
  5. {
  6. time_t currtime;
  7. struct tm *timer;
  8. char buffer[80];
  9. time( &currtime );
  10. timer = localtime( &currtime );
  11. printf("Locale is: %s\n", setlocale(LC_ALL, "en_GB.UTF-8"));
  12. strftime(buffer,80,"%c", timer );
  13. printf("Date is: %s\n", buffer);
  14. printf("Locale is: %s\n", setlocale(LC_ALL, "de_DE.UTF-8"));
  15. strftime(buffer,80,"%c", timer );
  16. printf("Date is: %s\n", buffer);
  17. return(0);
  18. }

让我们编译并运行上面的程序,这将产生以下结果:

  1. Locale is: en_GB
  2. Date is: Thu 23 Aug 2012 06:39:32 MST
  3. Locale is: de_DE
  4. Date is: Do 23 Aug 2012 06:39:32 MST

区域性名称和标识符(locale的内容)

区域性/语言名称区域性标识符区域性
""(空字符串)0x007F固定区域性
af0x0036南非荷兰语
af-ZA0x0436南非荷兰语(南非)
sq0x001C阿尔巴尼亚语
sq-AL0x041C阿尔巴尼亚语(阿尔巴尼亚)
ar0x0001阿拉伯语
ar-DZ0x1401阿拉伯语(阿尔及利亚)
ar-BH0x3C01阿拉伯语(巴林)
ar-EG0x0C01阿拉伯语(埃及)
ar-IQ0x0801阿拉伯语(伊拉克)
ar-JO0x2C01阿拉伯语(约旦)
ar-KW0x3401阿拉伯语(科威特)
ar-LB0x3001阿拉伯语(黎巴嫩)
ar-LY0x1001阿拉伯语(利比亚)
ar-MA0x1801阿拉伯语(摩洛哥)
ar-OM0x2001阿拉伯语(阿曼)
ar-QA0x4001阿拉伯语(卡塔尔)
ar-SA0x0401阿拉伯语(沙特阿拉伯)
ar-SY0x2801阿拉伯语(叙利亚)
ar-TN0x1C01阿拉伯语(突尼斯)
ar-AE0x3801阿拉伯语(阿联酋)
ar-YE0x2401阿拉伯语(也门)
hy0x002B亚美尼亚语
hy-AM0x042B亚美尼亚语(亚美尼亚)
az0x002C阿泽里语
az-Cyrl-AZ0x082C阿泽里语(阿塞拜疆,西里尔语)
az-Latn-AZ0x042C阿泽里语(阿塞拜疆,拉丁语)
eu0x002D巴斯克语
eu-ES0x042D巴斯克语(巴斯克地区)
be0x0023白俄罗斯语
be-BY0x0423白俄罗斯语(白俄罗斯)
bg0x0002保加利亚语
bg-BG0x0402保加利亚语(保加利亚)
ca0x0003加泰罗尼亚语
ca-ES0x0403加泰罗尼亚语(加泰罗尼亚地区)
zh-HK0x0C04中文(香港特别行政区,中国)
zh-MO0x1404中文(澳门特别行政区)
zh-CN0x0804中文(中国)
zh-Hans0x0004中文(简体)
zh-SG0x1004中文(新加坡)
zh-TW0x0404中文(台湾)
zh-Hant0x7C04中文(繁体)
hr0x001A克罗地亚语
hr-HR0x041A克罗地亚语(克罗地亚)
cs0x0005捷克语
cs-CZ0x0405捷克语(捷克共和国)
da0x0006丹麦语
da-DK0x0406丹麦语(丹麦)
dv0x0065迪维希语
dv-MV0x0465迪维希语(马尔代夫)
nl0x0013荷兰语
nl-BE0x0813荷兰语(比利时)
nl-NL0x0413荷兰语(荷兰)
en0x0009英语
en-AU0x0C09英语(澳大利亚)
en-BZ0x2809英语(伯利兹)
en-CA0x1009英语(加拿大)
en-0290x2409英语(加勒比)
en-IE0x1809英语(爱尔兰)
en-JM0x2009英语(牙买加)
en-NZ0x1409英语(新西兰)
en-PH0x3409英语(菲律宾)
en-ZA0x1C09英语(南非)
en-TT0x2C09英语(特立尼达和多巴哥)
en-GB0x0809英语(英国)
en-US0x0409英语(美国)
en-ZW0x3009英语(津巴布韦)
et0x0025爱沙尼亚语
et-EE0x0425爱沙尼亚语(爱沙尼亚)
fo0x0038法罗语
fo-FO0x0438法罗语(法罗群岛)
fa0x0029波斯语
fa-IR0x0429波斯语(伊朗)
fi0x000B芬兰语
fi-FI0x040B芬兰语(芬兰)
fr0x000C法语
fr-BE0x080C法语(比利时)
fr-CA0x0C0C法语(加拿大)
fr-FR0x040C法语(法国)
fr-LU0x140C法语(卢森堡)
fr-MC0x180C法语(摩纳哥)
fr-CH0x100C法语(瑞士)
gl0x0056加利西亚语
gl-ES0x0456加利西亚语(西班牙)
ka0x0037格鲁吉亚语
ka-GE0x0437格鲁吉亚语(格鲁吉亚)
de0x0007德语
de-AT0x0C07德语(奥地利)
de-DE0x0407德语(德国)
de-LI0x1407德语(列支敦士登)
de-LU0x1007德语(卢森堡)
de-CH0x0807德语(瑞士)
el0x0008希腊语
el-GR0x0408希腊语(希腊)
gu0x0047古吉拉特语
gu-IN0x0447古吉拉特语(印度)
he0x000D希伯来语
he-IL0x040D希伯来语(以色列)
hi0x0039印地语
hi-IN0x0439印地语(印度)
hu0x000E匈牙利语
hu-HU0x040E匈牙利语(匈牙利)
is0x000F冰岛语
is-IS0x040F冰岛语(冰岛)
id0x0021印度尼西亚语
id-ID0x0421印度尼西亚语(印度尼西亚)
it0x0010意大利语
it-IT0x0410意大利语(意大利)
it-CH0x0810意大利语(瑞士)
ja0x0011日语
ja-JP0x0411日语(日本)
kn0x004B卡纳达语
kn-IN0x044B卡纳达语(印度)
kk0x003F哈萨克语
kk-KZ0x043F哈萨克语(哈萨克斯坦)
kok0x0057贡根语
kok-IN0x0457贡根语(印度)
ko0x0012朝鲜语
ko-KR0x0412朝鲜语(韩国)
ky0x0040吉尔吉斯语
ky-KG0x0440吉尔吉斯语(吉尔吉斯坦)
lv0x0026拉脱维亚语
lv-LV0x0426拉脱维亚语(拉脱维亚)
lt0x0027立陶宛语
lt-LT0x0427立陶宛语(立陶宛)
mk0x002F马其顿语
mk-MK0x042F马其顿语(马其顿,FYROM)
ms0x003E马来语
ms-BN0x083E马来语(文莱达鲁萨兰)
ms-MY0x043E马来语(马来西亚)
mr0x004E马拉地语
mr-IN0x044E马拉地语(印度)
mn0x0050蒙古语
mn-MN0x0450蒙古语(蒙古)
no0x0014挪威语
nb-NO0x0414挪威语(伯克梅尔,挪威)
nn-NO0x0814挪威语(尼诺斯克,挪威)
pl0x0015波兰语
pl-PL0x0415波兰语(波兰)
pt0x0016葡萄牙语
pt-BR0x0416葡萄牙语(巴西)
pt-PT0x0816葡萄牙语(葡萄牙)
pa0x0046旁遮普语
pa-IN0x0446旁遮普语(印度)
ro0x0018罗马尼亚语
ro-RO0x0418罗马尼亚语(罗马尼亚)
ru0x0019俄语
ru-RU0x0419俄语(俄罗斯)
sa0x004F梵语
sa-IN0x044F梵语(印度)
sr-Cyrl-CS0x0C1A塞尔维亚语(塞尔维亚,西里尔语)
sr-Latn-CS0x081A塞尔维亚语(塞尔维亚,拉丁语)
sk0x001B斯洛伐克语
sk-SK0x041B斯洛伐克语(斯洛伐克)
sl0x0024斯洛文尼亚语
sl-SI0x0424斯洛文尼亚语(斯洛文尼亚)
es0x000A西班牙语
es-AR0x2C0A西班牙语(阿根廷)
es-BO0x400A西班牙语(玻利维亚)
es-CL0x340A西班牙语(智利)
es-CO0x240A西班牙语(哥伦比亚)
es-CR0x140A西班牙语(哥斯达黎加)
es-DO0x1C0A西班牙语(多米尼加共和国)
es-EC0x300A西班牙语(厄瓜多尔)
es-SV0x440A西班牙语(萨尔瓦多)
es-GT0x100A西班牙语(危地马拉)
es-HN0x480A西班牙语(洪都拉斯)
es-MX0x080A西班牙语(墨西哥)
es-NI0x4C0A西班牙语(尼加拉瓜)
es-PA0x180A西班牙语(巴拿马)
es-PY0x3C0A西班牙语(巴拉圭)
es-PE0x280A西班牙(秘鲁)
es-PR0x500A西班牙语(波多黎各)
es-ES0x0C0A西班牙语(西班牙)
es-UY0x380A西班牙语(乌拉圭)
es-VE0x200A西班牙语(委内瑞拉)
sw0x0041斯瓦希里语
sw-KE0x0441斯瓦希里语(肯尼亚)
sv0x001D瑞典语
sv-FI0x081D瑞典语(芬兰)
sv-SE0x041D瑞典语(瑞典)
syr0x005A叙利亚语
syr-SY0x045A叙利亚语(叙利亚)
ta0x0049泰米尔语
ta-IN0x0449泰米尔语(印度)
tt0x0044鞑靼语
tt-RU0x0444鞑靼语(俄罗斯)
te0x004A泰卢固语
te-IN0x044A泰卢固语(印度)
th0x001E泰语
th-TH0x041E泰语(泰国)
tr0x001F土耳其语
tr-TR0x041F土耳其语(土耳其)
uk0x0022乌克兰语
uk-UA0x0422乌克兰语(乌克兰)
ur0x0020乌尔都语
ur-PK0x0420乌尔都语(巴基斯坦)
uz0x0043乌兹别克语
uz-Cyrl-UZ0x0843乌兹别克语(乌兹别克斯坦,西里尔语)
uz-Latn-UZ0x0443乌兹别克语(乌兹别克斯坦,拉丁语)
vi0x002A越南语
vi-VN0x042A越南语(越南)