newlocale(3)的手册页部分说:
The mask is the logical OR of the following:
LC_COLLATE_MASK Collation
LC_CTYPE_MASK Character type
LC_MESSAGES_MASK Messages
LC_MONETARY_MASK Monetary
LC_NUMERIC_MASK Numeric
LC_TIME_MASK Time
LC_ALL_MASK The logical OR of all of the above
但它没有说明每个掩码位实际上具体表示。在我的例子中,我需要AM_STR
、PM_STR
、月份缩写(ABMON_1
,…)、完整月份名称(MON_1
,…)、工作日缩写(ABDAY_1
,…)和完整工作日名称(DAY_1
,…)的本地化字符串。
作为一个有根据的猜测,我认为我需要LC_MESSAGES_MASK
——但是我也需要LC_TIME_MASK
吗?
您需要LC_TIME_MASK
;你不需要LC_MESSAGES_MASK
来满足你的要求。
LC_MESSAGES
控制错误消息,而不是时间格式。要了解诸如LC_TIME
之类的"unmasking"名称的含义,请参阅setlocale(3)
的手册页。它们是标准的C语言(尽管链接到的POSIX页面包含一些扩展-特别是"POSIX"
区域设置)。
您可以在这里找到POSIX中区域设置的详细描述,
定义了不同的类型
- LC_CTYPE字符分类和大小写转换。
- LC_COLLATE排序顺序。
- LC_MONETARY货币格式。
- LC_NUMERIC数字格式,非货币格式。
- LC_TIME日期和时间格式。
- LC_MESSAGES信息和诊断消息的格式交互反应。