January 2, 2009 MKLOCALE 1

### NAME

mklocale - make LC_CTYPE locale files

### SYNOPSIS

mklocale [-d] [-t type] < source > language/LC_CTYPE mklocale [-d] [-t type] -o language/LC_CTYPE source

### DESCRIPTION

The mklocale utility reads an ```LC_CTYPE` source file from standard input and produces an ```LC_CTYPE` binary file on standard output suitable for placement in ```/usr/share/locale/<language>/LC_CTYPE`.

The format of source is quite simple. It consists of a series of lines which start with a keyword and have associated data following. C style comments are used to place comments in the file.

Following options are available:

-d
  Turns on debugging messages.

-o
  Specify output file.

-t
  Generate output in new-style LC_{MONETARY,NUMERIC,TIME,MESSAGES} locale-db format.

Besides the keywords which will be listed below, the following are valid tokens in source:

```RUNE`
  A ```RUNE` may be any of the following:

  'x'
    The ASCII character x.

  '\x'
    The ANSI C character \x where \x is one of ```\a`, ```\b`, ```\f`, ```\n`, ```\r`, ```\t`, or ```\v`.

  0x[0-9a-z]*
    A hexadecimal number representing a rune code.

  0[0-7]*
    An octal number representing a rune code.

  [1-9][0-9]*
    A decimal number representing a rune code.

```STRING`
  A string enclosed in double quotes (").

```THRU`
  Either ```...` or ```-`. Used to indicate ranges.

literal
  The follow characters are taken literally:

  ```<([`
    Used to start a mapping. All are equivalent.

  ```>)]`
    Used to end a mapping. All are equivalent.

  ``
    : Used as a delimiter in mappings.

Key words which should only appear once are:

```ENCODING`
  Followed by a ```STRING` which indicates the encoding mechanism to be used for this locale. The current encodings are:

  ```NONE`
    No translation and the default.

  ```UTF2`
    ```Universal character set Transformation Format` adopted from Plan 9 from Bell Labs.

  ```EUC`
    ```EUC` encoding as used by several vendors of UNIX systems.

```VARIABLE`
  This keyword must be followed by a single tab or space character, after which encoding specific data is placed. Currently only the ```EUC` encoding requires variable data.

```INVALID`
  A single ```RUNE` follows and is used as the invalid rune for this locale.

The following keywords may appear multiple times and have the following format for data:

<```RUNE1` `RUNE2`>
  ```RUNE1` is mapped to ```RUNE2`.

<```RUNE1` `THRU` `RUNEn`:`RUNE2`>
  Runes ```RUNE1` through ```RUNEn` are mapped to ```RUNE2` through ```RUNE2` + n-1.

```MAPLOWER`
  Defines the tolower mappings. ```RUNE2` is the lower case representation of ```RUNE1`.

```MAPUPPER`
  Defines the toupper mappings. ```RUNE2` is the upper case representation of ```RUNE1`.

```TODIGIT`
  Defines a map from runes to their digit value. ```RUNE2` is the integer value represented by ```RUNE1`. For example, the ASCII character `0' would map to the decimal value 0. Only values up to 255 are allowed.

The following keywords may appear multiple times and have the following format for data:

```RUNE`
  This rune has the property defined by the keyword.

```RUNE1 THRU RUNEn`
  All the runes between and including ```RUNE1` and ```RUNEn` have the property defined by the keyword.

```ALPHA`
  Defines runes which are alphabetic, printable, and graphic.

```CONTROL`
  Defines runes which are control characters.

```DIGIT`
  Defines runes which are decimal digits, printable, and graphic.

```GRAPH`
  Defines runes which are graphic and printable.

```LOWER`
  Defines runes which are lower case, printable, and graphic.

```PUNCT`
  Defines runes which are punctuation, printable, and graphic.

```SPACE`
  Defines runes which are spaces.

```UPPER`
  Defines runes which are upper case, printable, and graphic.

```XDIGIT`
  Defines runes which are hexadecimal digits, printable, and graphic.

```BLANK`
  Defines runes which are blank.

```PRINT`
  Defines runes which are printable.

```IDEOGRAM`
  Defines runes which are ideograms, printable, and graphic.

```SPECIAL`
  Defines runes which are special characters, printable, and graphic.

```PHONOGRAM`
  Defines runes which are phonograms, printable, and graphic.

```SWIDTHn`
  Defines runes with specific glyph width. n takes 0 to 3.

```CHARSET`
  Controls character set for subsequent runes.

### SEE ALSO

setlocale(3), nls(7)

### HISTORY

The mklocale utility first appeared in 4.4BSD.

### BUGS

The mklocale utility is overly simplistic.

We should switch to localedef and its file format, which is more standard.