gencat catfile msgfile...
gencat 命令将消息文本源文件 msgfile 合并到一个格式化的消息数据库 catfile 中。如果数据库 catfile 尚不存在,则会创建该数据库。如果 catfile 已经存在,则会将其消息放入新的 catfile 中。如果集合编号和消息编号冲突,则 msgfile 中定义的新消息文本将替换 catfile 中当前包含的旧消息文本。输入到 gencat 的消息文本源文件(或文件集)可以包含集合编号和消息编号,也可以只包含消息编号(在这种情况下将采用集合 NL_SETD)(请参见 nl_types.h(3HEAD))。
消息文本源文件的格式定义如下。请注意,消息文本源行的字段由单个 ASCII 空格字符或制表符分隔。任何其他 ASCII 空格或制表符都被视为后续字段的部件。
其中,n 指定后续消息(直至遇到下一个 $set、$delset 或文件结尾)的集合标识符。n 必须是 (1–{NL_SETMAX}) 范围内的一个数字。单个源文件中的集合标识符不需要是连续的。集合标识符后的任何字符串都被视为注释。如果消息文本源文件中未指定 $set 指令,则所有消息都位于缺省的消息集合 NL_SETD 中。
从现有消息目录中删除消息集合 n。集合编号后的任何字符串都视为注释。(注意:如果 n 不是有效的集合,则它将被忽略。)
如果某行以美元符号 $ 和紧随其后的一个 ASCII 空格或制表符开头,则会将其视为注释。
m 表示消息标识符,而且是 (1-{NL_MSGMAX}) 范围内的一个数字。message-text 将使用由上一个 $set 指令指定的集合标识符以及消息标识符 m 存储到消息目录中。如果 message-text 为空,且存在一个 ASCII 空格或制表符字段分隔符,则会将一个空字符串存储到消息目录中。如果消息源行具有一个消息编号,但没有字段分隔符或 message-text,则会从目录中删除该编号对应的现有消息(如果有)。消息标识符不需要是连续的。message-text 的长度必须在 (0–{ NL_TEXTMAX}) 范围内。
此行指定一个可选的引号字符 c,可用来将 message-text 括起来,从而使尾部的空格或空消息在消息源行中可见。缺省情况下,或者如果提供了一个空 $quote 指令,则不会将 message-text 用引号字符括起来。
消息文本源文件中的空行将被忽略。
文本字符串可以包含下表中定义的特殊字符和转义序列:
|
转义序列 \ddd 由反斜杠后跟 1 到 3 个八进制位组成,用来指定所需字符的值。如果跟在反斜杠后的字符并非指定字符,则会忽略反斜杠。
后跟 ASCII 换行符的反斜杠也用来在下一行延续字符串。因此,下面的两行描述的是单个消息字符串:
1 This line continues \ to the next line
这等同于:
1 This line continues to the next line
支持下列操作数:
格式化的消息目录的路径名。如果指定了 −,则将使用标准输出。
消息文本源文件的路径名。如果为某个 msgfile 实例指定了 −,则将使用标准输入。“消息文本源文件格式”中定义了消息文本源文件的格式。
有关影响 gencat 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。
将返回以下退出值:
成功完成。
出现错误。
有关下列属性的说明,请参见 attributes(5):
|
mkmsgs(1)、catgets(3C)、catopen(3C)、gettxt(3C)、nl_types.h(3HEAD)、attributes(5)、environ(5)、standards(5)