---
name: "gencat"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/gencat"
---

# gencat(1)

NLS catalog compiler

## NAME

**gencat** – NLS catalog compiler

## SYNOPSIS

**gencat** *catfile* *msgfile* *...*

## DESCRIPTION

The **gencat** utility merges the text NLS (National Language Support) in *msgfile* into a formatted message catalog file *catfile*. The file *catfile* will be created if it does not already exist. If *catfile* does exist, its messages will be included in the new *catfile*. If set and message numbers collide, the new message text defined in *msgfile* will replace the old message text currently contained in *catfile*.

## INPUT FILES

The format of a message text source file is defined below. Note that the fields of a message text source line are separated by a single space character; any other space characters are considered to be part of the field contents.

- $set *n* *comment*

  This line specifies the set identifier of the following messages until the next $set or end-of-file appears. The argument *n* is the set identifier which is defined as a number in the range \[1, NL\_SETMAX\]. Set identifiers must occur in ascending order within a single source file, but need not be contiguous. Any string following a space following the set identifier is treated as a comment. If no $set directive is specified in a given source file, all messages will be located in the default message set NL\_SETD.

- $delset *n* *comment*

  This line deletes messages from set *n* from a message catalog. The *n* specifies a set number. Any string following a space following the set number is treated as a comment.

- $ *comment*

  A line beginning with $ followed by a space is treated as a comment.

- *m* *message-text*

  A message line consists of a message identifier *m* in the range \[1, NL\_MSGMAX\]. The *message-text* is stored in the message catalog with the set identifier specified by the last $set directive, and the message identifier *m*. If the *message-text* is empty, and there is a space character following the message identifier, an empty string is stored in the message catalog. If the *message-text* is empty, and if there is no space character following the message identifier, then the existing message in the current set with the specified message identifier is deleted from the catalog. Message identifiers must be in ascending order within a single set, but need not be contiguous. The *message-text* length must be in the range \[0, NL\_TEXTMAX\].

- $quote *c*

  This line specifies an optional quote character *c* which can be used to surround *message-text* so that trailing space or empty messages are visible in message source files. By default, or if an empty $quote directive is specified, no quoting of *message-text* will be recognized.

Empty lines in message source files are ignored. The effect of lines beginning with any character other than those described above is undefined.

Text strings can contain the following special characters and escape sequences. In addition, if a quote character is defined, it may be escaped as well to embed a literal quote character.

- \\n

  line feed

- \\t

  horizontal tab

- \\v

  vertical tab

- \\b

  backspace

- \\r

  carriage return

- \\f

  form feed

- \\\\

  backslash

- \\ooo

  octal number in the range \[000, 377\]

A backslash character immediately before the end of the line in a file is used to continue the line onto the next line, e.g.,

```
1 This line is continued \
```

```
on this line.
```

If the character following the backslash is not one of those specified, the backslash is ignored.

## EXIT STATUS

The **gencat** utility exits 0 on success, and \>0 if an error occurs.

## SEE ALSO

[catclose(3)](/catclose/3.md), [catgets(3)](/catgets/3.md), [catopen(3)](/catopen/3.md)

## STANDARDS

The **gencat** utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification.

## AUTHORS

This manual page by Ken Stailey updated and revised by Terry Lambert.

## BUGS

A message catalog file created from a blank input file cannot be revised; it must be deleted and recreated.
