patterns(4)patterns(4)NAMEpatterns - Patterns for use with internationalization tools
SYNOPSIS
See the Description section.
DESCRIPTION
The patterns file contains the patterns that must be matched for the
internationalization tools extract, strextract, and strmerge.
The pattern file in the following example is the default patterns file
located in /usr/lib/nls/patterns.
# This is the header to insert at the beginning of the first new #
source file
$SRCHEAD1 (1) \#include <nl_types.h> nl_catd _m_catd; \
# The header to insert at the beginning of the rest of the new # source
files
$SRCHEAD2 (2) \#include <nl_types.h> extern nl_catd _m_catd; \
# This is the header to insert at the beginning of the message # cata‐
logues
$CATHEAD (3) \$ /* \$ * X/OPEN message catalogue \$ */ \ \$quote "
# This is how patterns that are matched will get rewritten.
$REWRITE (4) catgets(_m_catd, %s, %n, %t)
# Following is a list of the sort of strings we are looking for. # The
regular expression syntax is based on regexp(3).
$MATCH (5)
# Match on strings containing an escaped " "[^\\]*\\"[^"]*"
# Match on general strings "[^"]*"
# Now reject some special C constructs.
$REJECT (6) # the empty string ""0
# string with just one format descriptor "%." "%.\."
# string with just line control in "\\."
# string with just line control and one format descriptor in "%.\\."
"\\.%."
# ignore cpp include lines \#[ ]*include[ ]*".*" \#[ ]*ident[
]*".*"
# reject some common C functions and expressions with quoted # strings
[sS][cC][cC][sS][iI][dD]\[\][ ]*=[ ]*".*" open[ ]*([^,]*,[^)]*)
creat[ ]*([^,]*,[^)]*) access[ ]*([^,]*,[^)]*) chdir[
]*([^,]*,[^)]*) chmod[ ]*([^,]*,[^)]*) chown[ ]*([^,]*,[^)]*)
# Reject any strings in single line comments /\*.*\*/
# Print a warning for initialised strings.
$ERROR initialised strings cannot be replaced (7) char[^=]*=[
]*"[^"]*" char[^=]*=[ ]*"[^\\]*\\"[^"]*" char[ ]*\**[A-Za-z][A-Za-
z0-9]*\[[^\]*\][ ]*=[ {]*"[^"]*" char[ ]*\**[A-Za-z][A-Za-
z0-9]*\[[^\]*\][ ]*=[ {]*"[^\\]*\\"[^"]*"
The default patterns file is divided into the following sections: In
the $SRCHEAD1 section, the strmerge and extract commands place text in
this section at the beginning of the first new source program, which is
prefixed by nl_. These commands define the native language file
descriptors that point to the message catalog. In the $SRCHEAD2 sec‐
tion, the strmerge and extract commands place text in this section at
the beginning of the second and remaining source programs. These com‐
mands also define the native language file descriptors that point to
the message catalog. $SRCHEAD2 contains the external declaration of the
nl file descriptor. In the $CATHEAD section, the strmerge and extract
commands place text in this section at the beginning of the message
catalog. In the $REWRITE section, you specify how the strmerge and
extract commands should replace the extracted strings in the new source
program. You can supply three options to the catgets command: This
option increments the set number for each source. This option applies
only if you are using the strmerge command. For more information on
set numbers, see the catgets(3) reference page. This option increments
the message number for each string extracted. This option applies if
you are using either the strmerge or extract commands. This option
expands the text from the string extracted. The string can be a error
message or the default string extracted and printed by the catgets com‐
mand. For example, if you want an error message to appear when catgets
is unable to retrieve the message from the message catalog, you would
include the following line: catgets(_m_catd, %s, %n, "BAD STRING")
When catgets fails, it returns the message BAD STRING. In the
$MATCH section, you specify the patterns in the form of a regu‐
lar expression that you want the strextract, strmerge, and
extract commands to find and match. The regular expression fol‐
lows the same syntax rules as defined in regexp(3) reference
page. In the $REJECT section, you specify the matched strings
that you do not want the strmerge and extract commands to
replace in your source program. The regular expression follows
the same syntax rules as defined in regexp(3) reference page.
In the $ERROR section, the strextract, strmerge, and extract
commands look for bad matches and notify you with a warning mes‐
sage. The regular expression follows the same syntax rules as
defined in the regexp(3) reference page.
RELATED INFORMATIONextract(1), strextract(1), strmerge(1), trans(1), regexp(3)
Writing Software for the International Market delim off
patterns(4)