Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

setlocale(3C)

environ(5)

buildlang(1M)

NAME

buildlang − generate and display locale.def file

SYNOPSIS

buildlang [-n] input_file
buildlang −d [-f form] locale_name

buildlang is provided for historical reasons only.  Use localedef instead (see localedef(1M)).

DESCRIPTION

Without the -d option, buildlang automatically sets up the language environment as specified by input_file. buildlang reads a “ buildlang script” (see description below) from input_file, creates a file called locale.def, and installs this file in the appropriate directory.  If the -n option is specified, buildlang creates the locale.def in the current directory. 

If the -d option is specified, buildlang displays the contents of the locale.def file associated with the locale_name in the format of a “buildlang script” so that the output can be modified and used as an input file to buildlang to generate a modified locale.def file.  If a character code is printable, as defined by the current setting of the LC_CTYPE environment variable in the user’s environment, buildlang always outputs the character code in the “character constant” form.  If a character code is not printable, the -f option specifies the form in which the character code will be displayed.  The -fc, -fd, -fo, and -fx options cause buildlang to output each non-printable character code in the “character constant”, “decimal constant”, “octal constant”, and “hexadecimal constant” form, respectively (see Constants section below).  Without the -f option, buildlang display each printable character code in the “character constant” form and non-printable character code in the “hexadecimal constant” form. 

There are six categories of data in the locale.def file, recognized by setlocale(), which make up a language definition (see setlocale(3C)). They are:

LC_COLLATE Information in this category affects the behavior of the regular expressions and the NLS string collation functions. 

LC_CTYPE Information in this category affects the behavior of the character classification and conversion functions. 

LC_MONETARY Information in this category affects the behavior of functions which handle monetary values. 

LC_NUMERIC Information in this category affects the handling of the radix character in the formatted input/output functions and the string conversion functions. 

LC_TIME Information in this category affects the behavior of the time conversion functions. 

LC_ALL This category contains language-specific information which does not belong to any of the above categories. 

A buildlang script also consists of six categories.  The beginning of each category is identified by a “category tag” which has the form of LC_category where category is one of the following: ALL, COLLATE, CTYPE, MONETARY, NUMERIC, or TIME.  The end of each category is identified by a END_LC category tag.  The order of categories in the “buildlang script” is irrelevant.  All category specifications are optional.  If a category is not specified, setlocale() sets up the default “C” locale for that category (see setlocale(3C) and lang(5)).

Each category is composed of one or more statements.  Each statement begins with a keyword followed by one or more expressions.  An expression is a set of well-formed metacharacters, strings, and constants.  buildlang also recognizes comments and separators. 

More than one definition can be specified for each category.  If a category contains more than one definition, each additional definition must be named via the modifier keyword described below.  The first set of specifications is the default definition which may or may not have a modifier name. 

The following is a list of category tags, keywords and subsequent expressions which are recognized by buildlang.  The order of keywords within a category is irrelevant with the exception of the modifier keyword.  All keyword specifications are optional with the exception of the langname and langid keywords.  (Note that, as a convention, the category tags are composed of uppercase characters, while the keywords are composed of lowercase characters). 

Category Tags and Keywords

The following keywords do not belong to any category. 

langname String identifying the name of the language.  It follows the naming convention of the LANG environment variable:

language[_territory][.codeset]

(see environ(5)). This keyword is required by buildlang. 

langid Decimal number identifying the language id.  This keyword is required by buildlang.  The language id specified should be in the range of 1 to 999, and any user-defined language should assign its language id in the range of 901 to 999. 

revision String identifying the revision number of the locale.def file.  The string is restricted to contain at most 6 characters, all digits and one optional decimal point (.) character. 

The following keyword can be used in any category.  It must be used to name a definition when a category contains more than one definition. 

modifier String identifying the name of the modifier (see environ(5)). Since this keyword is used to associate a modifier with a set of specifications, it must come before any keyword in that set of specifications.

LC_ALL:
The following keywords belong to the LC_ALL category and should come between the category tag LC_ALL and END_LC:

yesstr String identifying the affirmative response for yes/no questions (a langinfo(5) item).

nostr String identifying the negative response for yes/no questions (a langinfo(5) item).

direction String indicating text direction (a langinfo(5) item).

context String indicating character context analysis.  String “null” or “0” indicates no context analysis is required.  String “1” indicates Arabic context analysis required. 

LC_CTYPE:
The following keywords belong to the LC_CTYPE category and should come between the category tag LC_CTYPE and END_LC:

isupper Character codes classified as uppercase letters. 

islower Character codes classified as lowercase letters. 

isdigit Character codes classified as numeric. 

isspace Character codes classified as spacing (delimiter) characters. 

ispunct Character codes classified as punctuation characters. 

iscntrl Character codes classified as control characters. 

isblank Character codes for printable space characters.  These also must be defined in isspace. 

isxdigit Character codes classified as hexadecimal digits. 

isfirst Character codes classified as the first bytes of two-byte characters. 

issecond Character codes classified as the second bytes of two-byte characters. 

ul Relationships between uppercase and lowercase characters.  Used for languages that have a one-to-one relationship between lowercase and uppercase characters. 

toupper Lowercase to uppercase character relationships. 

tolower Uppercase-to-lowercase character relationships.  Keywords toupper and tolower are used only for languages that do not have a one-to-one relationship between lowercase and uppercase characters. 

bytes_char String containing the maximum number of bytes per character for the character set used for a specified language (a langinfo(5) item).

alt_punct String mapped into the ASCII equivalent string b!"#$%&’()*+,-./:;<=>?@[\]^_‘{}~ , where b is a blank (a langinfo(5) item).

code_scheme Specifies the multi-byte character encoding scheme used.  The operand should be a string.  Currently, “HP15” and “EUC” strings are recognized.  If this keyword is not specified, or the operand is a null string (f3""), the encoding scheme is single-byte, or HP15 if bytes_char is 2.  See Native Language Support User’s Guide. 

cswidth Defines the number of bytes contained in a character, and the number of columns per character displayed on output devices.  This keyword should be specified if the encoding scheme is “EUC”.  EUC can be divided into 4 Supplementary Code Sets.  The first SCS, Supplementary Code Set 0, contains ASCII characters and is assumed to contain 1 byte per character and require 1 column on the output devices.  The operand is a string containing three ordered pairs of digits delimited by colons and commas.  The format is:

X:x,Y:y,Z:z

Field Interpretation
X SCS 1, number of bytes
x SCS 1, output width
Y SCS 2, number of bytes, after SS2
y SCS 2, output width
Z SCS 3, number of bytes, after SS3
z SCS 3, output width

LC_COLLATE:
The following keywords belong to the LC_COLLATE category and should come between the category tag LC_COLLATE and END_LC:

sequence Sequence of character codes for collation. 

LC_MONETARY:
The following keywords belong to the LC_MONETARY category and should come between the category tag LC_MONETARY and END_LC.  These keywords, except crncystr, are identical to the members in struct lconv defined in <locale.h> (see localeconv(3) ):

int_curr_symbol
currency_symbol
mon_decimal_point
mon_thousands_sep
mon_grouping
positive_sign
negative_sign
int_frac_digits
frac_digits
p_cs_precedes
p_sep_by_space
n_cs_precedes
n_sep_by_space
p_sign_posn
n_sign_posn

crncystr String for specifying the currency (a langinfo(5) item).

LC_NUMERIC:
The following keywords belong to the LC_NUMERIC category and should come between the category tag LC_NUMERIC and END_LC: These keywords, except alt_digits, are identical to the members in struct lconv defined in <locale.h> (see localeconv(3C)).

grouping

decimal_point (same as RADIXCHAR, a langinfo(5) item).

thousands_sep (same as THOUSEP, a langinfo(5) item).

alt_digits String mapped into the ASCII equivalent string 0123456789b+-.,eE, where b is a blank (a langinfo(5) item).

LC_TIME:
The following keywords belong to the LC_TIME category and should come between the category tag LC_TIME and END_LC: These keywords, except era, are identical to their corresponding langinfo(5) items (see langinfo(5)).

d_t_fmt
d_fmt
t_fmt
day_1 to day_7
abday_1 to abday_7
mon_1 to mon_7
abmon_1 to abmon_7
am_str
pm_str
year_unit
mon_unit
day_unit
hour_unit
min_unit
sec_unit
era_fmt

era
Names and dates of eras or emperors.

Expressions

Expressions consist of character-code constants, strings, and metacharacters.  There are four types of legal expressions; ctype, shift, collate, and info:

ctype Ctype expressions follow the keywords isupper, islower, isdigit, isspace, ispunct, iscntrl, isblank, isxdigit, isfirst, and issecond and can include either a single character-code constant or a character-code range consisting of a constant followed by a dash followed by another constant.  At least one separator must appear between the constants and dash.  The constant preceding the dash must have a smaller code value than the constant following the dash.  A range represents a set of consecutive character codes. 

shift Shift expressions follow keywords ul, toupper, and tolower, and must consist of two character-code constants enclosed by left and right angle brackets.  For ul and tolower, the first constant represents an uppercase character and the second the corresponding lowercase character.  For toupper, the first constant represents an lowercase character and the second the corresponding uppercase character. 

collate Collate expressions that follow the keyword sequence represent a sequence of character codes that define a collation order.  Each character code in the series is assigned an ascending sequence number.  Collate expressions include single character-code constants, character-code ranges, character-code priority sets, two-to-one character-code pairs, one-to-two character-code pairs and character-code don’t-care sets. 

A character-code priority set is a collection of one or more constants or other collate expressions enclosed by left and right parenthesis.  Constants or expressions within a priority set have the same collation sequence number but different priorities.  The priorities account for case and accent differences. 

A two-to-one character-code pair is represented by two character-code constants enclosed by left and right angle brackets.  Two-to-one characters are two adjacent characters that occupy one position in the collating sequence.  For example, the expression sequence (’C’ ’c’) ( <’C’ ’h’> <’c’ ’h’>) (’D’ ’d’) instructs buildlang to treat the character combinations Ch and ch as single characters that collate between lowercase c and uppercase D. 

A one-to-two character code is represented by two character-code constants enclosed by left and right brackets.  One-to-two characters are single characters that occupy two adjacent positions in the collating sequence.  For example, suppose the character ’X’ represents a one-to-two character that collates as AE.  This information can be expressed as (’A’ [’X’ ’E’] ’a’).  The character ’X’ has the same primary sequence number as ’A’ and ’a’, a priority that lies between ’A’ and ’a’ and a secondary sequence number that is the same as ’E’. 

A character-code don’t-care set is a collection of one or more constants or other collate expressions enclosed by left and right curly brackets.  Constants or expressions within a don’t-care set are ignored in character comparisons. 

info Info expressions follow all langinfo-type, lconv-type and era keywords.  Each expression is a string (see Strings section below). 

The expressions following the langinfo-type keywords define the strings associated with items in langinfo(5). Each expression consists of a string to be associated with the item identified by the keyword. 

The expressions following the lconv-type keywords define the strings associated with members of lconv struct in localeconv(3C). Each expression consists of a string to be associated with the member identified by the keyword. 

Each expression following the keyword era defines how the years are counted and displayed for one era (or emperor’s reign).  The expressions must be in the following format:

directionf3:offset:start_date:end_date:name:format

where:

direction Either a + or - character.  The + character indicates the time axis should be such that the years count in the positive direction when moving from the starting date towards the ending date.  The - character indicates the time axis should be such that the years count in the negative direction when moving from the starting date towards the ending date. 

offset A number in the range [SHRT_MIN,SHRT_MAX] indicating the number of the first year of the era. 

start_date A date in the form yyyy/mm/dd where yyyy, mm, and dd are the year, month and day numbers, respectively, of the start of the era.  Years prior to the year 0 A.D. are represented as negative numbers.  For example, an era beginning March 5th in the year 100 B.C.  would be represented as -100/3/5.  Years in the range [SHRT_MIN+1,SHRT_MAX-1] are supported. 

end_date The ending date of the era in the same form as the start_date above or one of the two special values -* or +*.  A value of -* indicates that the ending date of the era extends to the beginning of time while +* indicates it extends to the end of time.  The ending date can be chronologically either before or after the starting date of an era.  For example, the expressions for the Christian eras A.D. and B.C.  would be:

+:0:0000/01/01:+*:A.D.:%o %N
+:1:-0001/12/31:-*:B.C.:%o %N

name A string representing the name of the era which is substituted for the %N directive of date(1) and strftime(3C).

format A string for formatting the %E directive of date(1) and strftime(3C). This string is usually a function of the %o and %N directives.  If format is not specified, the string specified for the LC_TIME category keyword era_fmt (see above) is used as a default. 

Constants

Constants represent character codes in the ctype, shift and collate expressions.  C programming language integer and character constants can be used as character codes, including:

decimal constants Sequence of digits not beginning with a 0 (zero). 

octal constants Sequence of digits beginning with a 0 (zero). 

hexadecimal constants Sequence of digits preceded by 0x or 0X (zero followed by character x or X).  Hexadecimal digits include a or A through f or F, with values 10 through 15. 

character constants A single character written between single quotes, having the numerical value of the character in the machine’s character set. 

Strings

Strings are used in info expressions.  A string is a sequence of zero or more characters surrounded by double quotes (").  Within a string, the double-quote character must be preceded by a backslash (\).  The following escape sequences also can be used:

\n newline

\t horizontal tab

\b backspace

\r carriage return

\f form feed

\\ backslash

\’ single quote

\ddd bit pattern

The escape \ddd consists of the backslash followed by 1, 2, or 3 octal digits specifying the value of the desired character.  Also, a backslash (\) and an immediately-following newline are ignored. 

Metacharacters

Metacharacters are characters having a special meaning to buildlang in ctype, shift, and collate expressions.  To escape the special meaning of these characters, surround them with single quotes.  buildlang meta-characters include:

- Represents a range of consecutive character codes. 

< When used with the ul, toupper, and tolower keywords, indicates the beginning of an uppercase-lowercase character code relationship.  When used with the sequence keyword, indicates the beginning of a two-to-one character pair. 

> When used with the ul, toupper, and tolower keywords, indicates the end of an uppercase-lowercase character code relationship.  When used with the sequence keyword, indicates the end of a two-to-one character pair. 

[ Indicates the beginning of a one-to-two character pair. 

] Indicates the end of a one-to-two character pair. 

( Indicates the beginning of a group of character code constants or expressions having the same collation sequence number, but different priorities. 

) Indicates the end of a group of character code constants or expressions having the same collation sequence number, but different priorities. 

{ Indicates the beginning of a group of character code constants or expressions belonging to the same set of collation don’t-care characters. 

} Indicates the end of a group of character code constants or expressions belonging to the same set of collation don’t-care characters. 

Comments

Comments are all characters between a pound sign (#) and a carriage return, except when used in the character code constants and strings.  Comments and blank lines are ignored. 

Separators

Separator characters include blanks and tabs.  Any number of separators can be used to delimit the keywords, metacharacters, constants and strings that comprise a buildlang script. 

EXTERNAL INFLUENCES

Environment Variables

LC_CTYPE determines the printable characters when the -d option is specified. 

If LC_CTYPE is not specified in the environment or is set to the empty string, a default of “C” (see lang(5)) is used instead of LC_CTYPE. 

International Code Set Support

Single- and multi-byte character code sets are supported. 

EXAMPLES

The following buildlang script creates the locale file for the american language using the ROMAN8 code set:

# language: american # code set: ROMAN8

langname        "american"
langid  1
revision        "1.1"
##################################################
# Set up the LC_ALL category of the table
LC_ALL
yesstr  "yes"   # yes string
nostr   "no"    # no string
direction       ""      # left-to-right orientation
context ""
END_LC
##################################################
# Set up the LC_CTYPE category of the table
LC_CTYPE
isupper ’A’ - ’Z’               # true if an uppercase char
        0xa1 - 0xa7     0xad  0xae      0xb1  0xb4  0xb6
        0xd0  0xd2      0xd3  0xd8      0xda - 0xdc
        0xde - 0xe1     0xe3    0xe5 - 0xe9
        0xeb  0xed      0xee  0xf0
islower ’a’ - ’z’               # true if a lowercase char
        0xb2  0xb5      0xb7    0xc0 - 0xcf  0xd1
        0xd4 - 0xd7     0xd9  0xdd      0xde  0xe2
        0xe4  0xea      0xec  0xef      0xf1
isdigit ’0’ - ’9’               # true if a digit
isspace ’ ’     0x9 - 0xd       # true if a space
ispunct ’!’ - ’/’       ’:’ - ’@’       # true if a punctuation char
        ’[’ - ’‘’       ’{’ - ’~’
        168 - 172       175 176 179
        184 - 191       242 - 254
iscntrl 0x0 - 0x1f      0x7f    # true if a control char
        128 - 160       255
isblank ’ ’             # true if a blank char
isxdigit        ’0’ - ’9’       ’a’ - ’f’       # true if a hex digit
                ’A’ - ’F’
# isfirst and issecond are irrelevant here
ul      < ’A’ ’a’ >     < ’B’ ’b’ >     # < upper  lower>
        < ’C’ ’c’ >     < ’D’ ’d’ >
        < ’E’ ’e’ >     < ’F’ ’f’ >
        < ’G’ ’g’ >     < ’H’ ’h’ >
        <0x49 0X69>     <0x4a 0X6a>     # hex constants allowed
        <0113 0153>     <0114 0154>     # octal constants allowed
        < 77  109 >     < 78  110 >     # decimal constants allowed
        < ’O’ ’o’ >     < ’P’ ’p’ >     # literal constants allowed
        < ’Q’ ’q’ >     < ’R’ ’r’ >
        < ’S’ ’s’ >     < ’T’ ’t’ >
        < ’U’ ’u’ >     < ’V’ ’v’ >
        < ’W’ ’w’ >     < ’X’ ’x’ >
        < ’Y’ ’y’ >     < ’Z’ ’z’ >
        <0xa1 0xc8>     <0xa2 0xc0>
        <0xa3 0xc9>     <0xa4 0xc1>
        <0xa5 0xcd>     <0xa6 0xd1>
        <0xa7 0xdd>     <0xad 0xcb>
        <0xae 0xc3>     <0xb4 0xb5>
        <0xb6 0xb7>     <0xd0 0xd4>
        <0xd2 0xd6>     <0xd3 0xd7>
        <0xd8 0xcc>     <0xda 0xce>
        <0xdb 0xcf>     <0xdc 0xc5>
        <0xdf 0xc2>     <0xe0 0xc4>
        <0xe1 0xe2>     <0xe3 0xe4>
        <0xe5 0xd5>     <0xe6 0xd9>
        <0xe7 0xc6>     <0xe8 0xca>
        <0xe9 0xea>     <0xeb 0xec>
        <0xed 0xc7>     <0xee 0xef>
        <0xf0 0xf1>
bytes_char      "1"     # max number of bytes per char
alt_punct       ""      # no alternative punctuation
code_scheme     ""      # encoding scheme is single-byte
END_LC
##################################################
# Set up the LC_COLLATE category of the table
# dictionary collating sequence:
# spaces, decimal digits,
# alphabetic characters, punctuation,
# control characters
LC_COLLATE
modifier        "nofold"
sequence        ’ ’ 0xa0 ’0’ - ’9’
        ( ’A’ [0xd3 ’E’] 0xe0 0xa1 0xa2 0xd8 0xd0 0xe1 ) ’B’
        ( ’C’ 0xb4 ) ( ’D’ 0xe3 ) ( ’E’ 0xdc 0xa3 0xa4 0xa5 ) ’F’
        ’G’ ’H’ ( ’I’ 0xe5 0xe6 0xa6 0xa7 ) ’J’ ’K’ ’L’ ’M’
        ( ’N’ 0xb6 ) ( ’O’ 0xe7 0xe8 0xdf 0xda 0xe9 0xd2 ) ’P’ ’Q’
        ’R’ ( ’S’ 0xeb ) ’T’ ( ’U’ 0xed 0xad 0xae 0xdb )
        ’V’ ’W’ ’X’ ( ’Y’ 0xee ) ’Z’ 0xf0
        ( ’a’ [0xd7 ’e’] 0xc4 0xc8 0xc0 0xcc 0xd4 0xe2 ) ’b’
        ( ’c’ 0xb5 ) ( ’d’ 0xe4 ) ( ’e’ 0xc5 0xc9 0xc1 0xcd ) ’f’
        ’g’ ’h’ ( ’i’ 0xd5 0xd9 0xd1 0xdd) ’j’ ’k’ ’l’ ’m’
        ( ’n’ 0xb7 ) ( ’o’ 0xc6 0xca 0xc2 0xce 0xea 0xd6 ) ’p’ ’q’
        ’r’ ( [0xde ’s’] ’s’ 0xec ) ’t’ ( ’u’ 0xc7 0xcb 0xc3 0xcf )
        ’v’ ’w’ ’x’ ( ’y’ 0xef ) ’z’ 0xf1
        0xb1  0xb2  0xf2 - 0xf5  ’(’ ’)’ ’[’ ’]’
        ’{’ ’}’  0xfb  0xfd  ’<’ ’>’ ’=’ ’+’ ’-’  0xfe  0xf7  0xf8
        0xb3  ’%’ ’*’ ’.’ ’,’ ’;’ ’:’  0xb9  ’?’  0xb8  ’!’
        ’/’ ’\\’  ’|’ ’@’ ’&’ ’#’  0xbd  ’$’  0xbf  0xbb  0xaf
        0xbc  0xbe  0xba  ’"’ ’‘’ ’^’ ’~’  0xa8 - 0xac  ’_’
        0xf6  0xb0  0xf9  0xfa  0xfc  0x0 - 0x1f  0x80 - 0x9f
        0x7f  0xff
modifier        "fold"
sequence        ’ ’ 0xa0 ’0’ - ’9’
        ( ’A’ [0xd3 ’E’] ’a’ [0xd7 ’e’] 0xe0 0xc4 0xa1 0xc8 0xa2 0xc0
          0xd8 0xcc 0xd0 0xd4 0xe1 0xe2 )
        ( ’B’ ’b’ ) ( ’C’ ’c’ 0xb4 0xb5 ) ( ’D’ ’d’ 0xe3 0xe4 )
        ( ’E’ ’e’ 0xdc 0xc5 0xa3 0xc9 0xa4 0xc1 0xa5 0xcd ) ( ’F’ ’f’ )
        ( ’G’ ’g’ ) ( ’H’ ’h’ )
        ( ’I’ ’i’ 0xe5 0xd5 0xe6 0xd9 0xa6 0xd1 0xa7 0xdd) ( ’J’ ’j’ )
        ( ’K’ ’k’ ) ( ’L’ ’l’ ) ( ’M’ ’m’ ) ( ’N’ ’n’ 0xb6 0xb7 )
        ( ’O’ ’o’ 0xe7 0xc6 0xe8 0xca 0xdf 0xc2 0xda 0xce 0xe9 0xea
          0xd2 0xd6 ) ( ’P’ ’p’ ) ( ’Q’ ’q’ ) ( ’R’ ’r’ )
        ( ’S’ [0xde ’s’] ’s’ 0xeb 0xec ) ( ’T’ ’t’ )
        ( ’U’ ’u’ 0xed 0xc7 0xad 0xcb 0xae 0xc3 0xdb 0xcf ) ( ’V’ ’v’ )
        ( ’W’ ’w’ ) ( ’X’ ’x’ ) ( ’Y’ ’y’ 0xee 0xef ) ( ’Z’ ’z’ )
        ( 0xf0 0xf1 ) 0xb1  0xb2  0xf2 - 0xf5  ’(’ ’)’ ’[’ ’]’
        ’{’ ’}’  0xfb  0xfd  ’<’ ’>’ ’=’ ’+’ ’-’  0xfe  0xf7  0xf8
        0xb3  ’%’ ’*’ ’.’ ’,’ ’;’ ’:’  0xb9  ’?’  0xb8  ’!’
        ’/’ ’\\’  ’|’ ’@’ ’&’ ’#’  0xbd  ’$’  0xbf  0xbb  0xaf
        0xbc  0xbe  0xba  ’"’ ’‘’ ’^’ ’~’  0xa8 - 0xac  ’_’
        0xf6  0xb0  0xf9  0xfa  0xfc  0x0 - 0x1f  0x80 - 0x9f
        0x7f  0xff
END_LC
##################################################
# Set up the LC_MONETARY category of the table
LC_MONETARY
int_curr_symbol "USD "
currency_symbol "$"
mon_decimal_point       "."
mon_thousands_sep       ","
mon_grouping    "\\3"
positive_sign   ""
negative_sign   "-"
int_frac_digits "2"
frac_digits     "2"
p_cs_precedes   "1"
p_sep_by_space  "0"
n_cs_precedes   "1"
n_sep_by_space  "0"
p_sign_posn     "1"
n_sign_posn     "4"
crncystr        "-US$"
END_LC
##################################################
# Set up the LC_NUMERIC category of the table
LC_NUMERIC
grouping        "\\3"
thousands_sep   ","     # THOUSEP: thousands separator
decimal_point   "."     # RADIXCHAR: radix character
alt_digits      ""      # no alternative digits
END_LC
##################################################
# Set up the LC_TIME category of the table
LC_TIME
d_t_fmt "%a, %h %d, 19%y %r"    # date & time format string
d_fmt   "%a, %h %d, 19%y"       # date format string
t_fmt   "%r"    # time format string
day_1   "Sunday"        # weekday names
day_2   "Monday"
day_3   "Tuesday"
day_4   "Wednesday"
day_5   "Thursday"
day_6   "Friday"
day_7   "Saturday"
abday_1 "Sun"   # weekday abbreviations
abday_2 "Mon"
abday_3 "Tue"
abday_4 "Wed"
abday_5 "Thu"
abday_6 "Fri"
abday_7 "Sat"
mon_1   "January"       # month names
mon_2   "February"
mon_3   "March"
mon_4   "April"
mon_5   "May"
mon_6   "June"
mon_7   "July"
mon_8   "August"
mon_9   "September"
mon_10  "October"
mon_11  "November"
mon_12  "December"
abmon_1 "Jan"   # month abbreviations
abmon_2 "Feb"
abmon_3 "Mar"
abmon_4 "Apr"
abmon_5 "May"
abmon_6 "Jun"
abmon_7 "Jul"
abmon_8 "Aug"
abmon_9 "Sep"
abmon_10        "Oct"
abmon_11        "Nov"
abmon_12        "Dec"
am_str  "AM"    # AM string
pm_str  "PM"    # PM string
year_unit       ""      # the unit of year
mon_unit        ""      # the unit of month
day_unit        ""      # the unit of day
hour_unit       ""      # the unit of hour
min_unit        ""      # the unit of minute
sec_unit        ""      # the unit of second
# There is no era or emperor year for the american language,
# but here is an example of the japanese era_fmt and era specification:
era_fmt "%N%onen"       # normal era format string
era     "+:2:1990/01/01:+*:Heisei"
        "+:1:1989/01/08:1989/12/31:Heisei:%Ngannen"     # special format for 1st year
        "+:2:1927/01/01:1989/01/07:Shouwa"
        "+:1:1926/12/25:1926/12/31:Shouwa:%Ngannen"     # special format for 1st year
        "+:2:1913/01/01:1926/12/24:Taishou"
        "+:1:1912/07/30:1912/12/31:Taishou:%Ngannen"    # special format for 1st year
        "+:2:1869/01/01:1912/07/29:Meiji"
        "+:1:1868/09/08:1868/12/31:Meiji:%Ngannen"      # special format for 1st year
        "-:1868:1868/09/07:-*::%o"      # revert to regular year numbering for
                # years prior to the supported eras
END_LC

ERRORS

If buildlang detects any errors, it terminates with an error message and will not generate a locale.def file. 

WARNINGS

To specify a 16-bit character, it is recommended to use two bit-pattern (\ ddd) escape sequences.

AUTHOR

buildlang was developed by HP. 

FILES

/usr/lib/nls/config
/usr/lib/nls/language[/territory][/codeset]/locale.def

SEE ALSO

setlocale(3C), environ(5). 

Hewlett-Packard Company  —  HP-UX Release 9.0: August 1992

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026