具体来说,newlocale(3)的掩码位是什么意思?

时间:2013-01-08 00:49:12

标签: c locale

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_STRPM_STR,月缩写(ABMON_1,...),完整月份名称(MON_1,...)的本地化字符串,工作日缩写(ABDAY_1,...)和完整的工作日名称(DAY_1,...)。

作为一个有根据的猜测,我认为我需要LC_MESSAGES_MASK - 但我还需要LC_TIME_MASK吗?

2 个答案:

答案 0 :(得分:1)

您需要LC_TIME_MASK;根据您的要求,您不需要LC_MESSAGES_MASK

LC_MESSAGES控制错误消息,而不是时间格式化。要查看LC_TIME之类的“未屏蔽”名称,请参阅setlocale(3)的手册页。它们是标准C(尽管链接的POSIX页面包含一些扩展名 - 特别是"POSIX"语言环境)。

答案 1 :(得分:0)

您可以在POSIX中找到有关区域设置的详细说明,here

定义了不同的类型

  1. LC_CTYPE 字符分类和案例转换。
  2. LC_COLLATE 整理顺序。
  3. LC_MONETARY货币格式。
  4. LC_NUMERIC 数字,非货币格式。
  5. LC_TIME日期和时间格式。
  6. LC_MESSAGES信息和诊断信息的格式和 互动回应。