strextract - batch string extraction
strextract [-p patternfile] [-i ignorefile] [-d]
Ignore text strings specified in ignorefile. By default,
the strextract command searches for ignorefile in the current
working directory, your home directory, and
If you omit the -i option, strextract recognizes
all strings specified in the patterns file. Use
patternfile to match strings in the input source
program. By default, the command searches for the
pattern file in the current working directory, your
home directory, and finally /usr/lib/nls.
If you omit the -p option, the strextract command
uses a default patterns file that is stored in
/usr/lib/nls/patterns. Disables warnings of duplicate
strings. If you omit the -d option, strextract
prints warnings of duplicate strings in your source
The strextract command extracts text strings from source
programs. This command also writes the string it extracts
to a message text file. The message text file contains the
text for each message extracted from your input source
program. The strextract command names the file by appending
to the name of the input source program.
In the source-program argument, you name one or more
source programs from which you want messages extracted.
The strextract command does not extract messages from
source programs included using the #include directive.
Therefore, you might want a source program and all the
source programs it includes on a single strextract command
You can create a patterns file (as specified by patternfile
) to control how the strextract command extracts
text. The patterns file is divided into several sections,
each of which is identified by a keyword. The keyword must
start at the beginning of a new line, and its first character
must be a dollar sign ($). Following the identifier,
you specify a number of patterns. Each pattern
begins on a new line and follows the regular expression
syntax you use in the regexp(3) routine. For more information
on the patterns file, see the patterns(4) reference
In addition to the patterns file, you can create a file
that indicates strings that extract ignores. Each line in
this ignore file contains a single string to be ignored
that follows the syntax of the regexp(3) routine.
When you invoke the strextract command, it reads the
patterns file and the file that contains strings it
ignores. You can specify a patterns file and an ignore
file on the strextract command line. Otherwise, the
strextract command matches all strings and uses the
default patterns file.
If strextract finds strings which match the ERROR directive
in the pattern file, it reports the strings to standard
error (stderr.) but does not write the string to the
After running strextract, you can edit the message text
file to remove text strings which do not need translating
before running strmerge.
It is recommended that you use extract command as a
visual front end to the strextract command rather than
running strextract directly.
Given the default pattern file, you cannot cause strextract
to ignore strings in comments that are longer than
You can specify only one rewrite string for all classes of
The strextract command does not extract strings from files
include with #include directive. You must run the strextract
commands on these files separately.
% strextract -p c_patterns prog.c prog2.c % vi prog.str %
strmerge -p c_patterns prog.c prog2.c % gencat prog.cat
prog.msg prog2.msg % vi nl_prog.c % vi nl_prog2.c % cc
In this example, the strextract command uses the c_patterns
file to determine which strings to match. The input
source programs are named prog.c and prog2.c.
If you need to remove any of the messages or extract one
of the created strings, edit the resulting message file,
prog.str. Under no conditions should you add to this file.
Doing so could result in unpredictable behavior.
You issue the strmerge command to replace the extracted
strings with calls to the message catalog. In response to
this command, strmerge, creates the source message catalogs,
prog.msg and prog2.msg, and the output source programs,
nl_prog.c and nl_prog2.c.
You must edit nl_prog.c and nl_prog2.c to include the
appropriate catopen and catclose function calls.
The gencat command creates a message catalog and the cc
command creates an executable program.
gencat(1), extract(1), strmerge(1), regexp(3), catopen(3),
Writing Software for the International Market
[ Back ]