strmerge - batch string replacement
strmerge [-m prefix] [-p patternfile] [-s string]
Add prefix to message numbers in the output source program
and source message catalog. You can use this prefix as a
mnemonic. You must process source message catalogs that
contain number prefixes using the mkcatdefs command. Message
numbers will be in the form:
Set numbers will be in the form:
If you process your input source program with the
mkcatdefs command, the resulting source program and
source message catalog might not be portable. For
more information, see the Writing Software for the
International Market. Use patternfile to match
strings in the input source program. By default,
the command searches for the pattern file in the
current directory, your home directory and finally
If you omit the -p option, the strmerge command
uses a default patterns file that is stored in
/usr/lib/nls/patterns. Write string at the top of
the source message catalog. If you omit the -s
option, strmerge uses the string specified in the
$CATHEAD section of the patterns file.
The strmerge command reads the strings specified in the
message file produced by strextract and replaces those
strings with calls to the message file in the source program
to create a new source program. The new version of
source program has the same name as the input source program,
with the prefix nl_. For example, if the input
source program is named prog.c, the output source program
is named nl_prog.c. You use this command to replace hardcoded
messages (text strings identified by the strextract
command) with calls to the catgets function and to create
a source message catalog file. The source message catalog
contains the text for each message extracted from your
input source program. The strmerge command names the file
by appending to the name of the input source program. For
example, the source message catalog for the prog.c program
is named prog.msg. You can use the source message catalog
as input to the gencat command.
At run time, the program reads the message text from the
message catalog. By storing messages in a message catalog,
instead of your program, you allow the text of messages
to be translated to a new language or modified without
the source program being changed.
In the source-program argument, you name one or more
source programs for which you want strings replaced. The
strmerge command does not replace messages for source programs
included using the #include directive. Therefore,
you might want a source program and all the source programs
it includes on a single strmerge command line.
You can create a patterns file (as specified by patternfile
) to control how the strmerge command replaces 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 ed editor. For more information on the patterns
file, see the patterns(4) reference page.
You can specify only one rewrite string for all classes of
The strmerge command does not verify if the message text
file matches the source file being rewritten.
The strmerge command does not replace strings to files
included with #include directive. You must run the
strmerge command on these files separately.
The following produces a message file prog.cat for a program
% 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.
Before compiling the source programs, 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.
extract(1), gencat(1), strextract(1), trans(1), regexp(3),
catopen(3), catgets(3), patterns(4)
Writing Software for the International Market
[ Back ]