blob: cef407353f067d98e7e581aeb23da118e76bba92 [file] [log] [blame]
@c This file is part of the GNU gettext manual.
@c Copyright (C) 1995-2019 Free Software Foundation, Inc.
@c See the file gettext.texi for copying conditions.
@pindex msgexec
@cindex @code{msgexec} program, usage
@example
msgexec [@var{option}] @var{command} [@var{command-option}]
@end example
@cindex apply command to all translations in a catalog
The @code{msgexec} program applies a command to all translations of a
translation catalog.
The @var{command} can be any program that reads a translation from standard
input. It is invoked once for each translation. Its output becomes
msgexec's output. @code{msgexec}'s return code is the maximum return code
across all invocations.
@cindex @code{xargs}, and output from @code{msgexec}
A special builtin command called @samp{0} outputs the translation, followed
by a null byte. The output of @samp{msgexec 0} is suitable as input for
@samp{xargs -0}.
@table @samp
@item --newline
@opindex --newline@r{, @code{msgfilter} option}
Add newline at the end of each input line.
@end table
@vindex MSGEXEC_MSGCTXT@r{, environment variable}
@vindex MSGEXEC_MSGID@r{, environment variable}
@vindex MSGEXEC_MSGID_PLURAL@r{, environment variable}
@vindex MSGEXEC_LOCATION@r{, environment variable}
@vindex MSGEXEC_PLURAL_FORM@r{, environment variable}
@vindex MSGEXEC_PREV_MSGCTXT@r{, environment variable}
@vindex MSGEXEC_PREV_MSGID@r{, environment variable}
@vindex MSGEXEC_PREV_MSGID_PLURAL@r{, environment variable}
During each @var{command} invocation, the environment variable
@code{MSGEXEC_MSGID} is bound to the message's msgid, and the environment
variable @code{MSGEXEC_LOCATION} is bound to the location in the PO file
of the message. If the message has a context, the environment variable
@code{MSGEXEC_MSGCTXT} is bound to the message's msgctxt, otherwise it is
unbound. If the message has a plural form, environment variable
@code{MSGEXEC_MSGID_PLURAL} is bound to the message's msgid_plural and
@code{MSGEXEC_PLURAL_FORM} is bound to the order number of the plural
actually processed (starting with 0), otherwise both are unbound.
If the message has a previous msgid (added by @code{msgmerge}),
environment variable @code{MSGEXEC_PREV_MSGCTXT} is bound to the
message's previous msgctxt, @code{MSGEXEC_PREV_MSGID} is bound to
the previous msgid, and @code{MSGEXEC_PREV_MSGID_PLURAL} is bound to
the previous msgid_plural.
@cindex catalog encoding and @code{msgexec} output
Note: It is your responsibility to ensure that the @var{command} can cope
with input encoded in the translation catalog's encoding. If the
@var{command} wants input in a particular encoding, you can in a first step
convert the translation catalog to that encoding using the @samp{msgconv}
program, before invoking @samp{msgexec}. If the @var{command} wants input
in the locale's encoding, but you want to avoid the locale's encoding, then
you can first convert the translation catalog to UTF-8 using the
@samp{msgconv} program and then make @samp{msgexec} work in an UTF-8
locale, by using the @code{LC_ALL} environment variable.
@subsection Input file location
@table @samp
@item -i @var{inputfile}
@itemx --input=@var{inputfile}
@opindex -i@r{, @code{msgexec} option}
@opindex --input@r{, @code{msgexec} option}
Input PO file.
@item -D @var{directory}
@itemx --directory=@var{directory}
@opindex -D@r{, @code{msgexec} option}
@opindex --directory@r{, @code{msgexec} option}
Add @var{directory} to the list of directories. Source files are
searched relative to this list of directories. The resulting @file{.po}
file will be written relative to the current directory, though.
@end table
If no @var{inputfile} is given or if it is @samp{-}, standard input is read.
@subsection Input file syntax
@table @samp
@item -P
@itemx --properties-input
@opindex -P@r{, @code{msgexec} option}
@opindex --properties-input@r{, @code{msgexec} option}
Assume the input file is a Java ResourceBundle in Java @code{.properties}
syntax, not in PO file syntax.
@item --stringtable-input
@opindex --stringtable-input@r{, @code{msgexec} option}
Assume the input file is a NeXTstep/GNUstep localized resource file in
@code{.strings} syntax, not in PO file syntax.
@end table
@subsection Informative output
@table @samp
@item -h
@itemx --help
@opindex -h@r{, @code{msgexec} option}
@opindex --help@r{, @code{msgexec} option}
Display this help and exit.
@item -V
@itemx --version
@opindex -V@r{, @code{msgexec} option}
@opindex --version@r{, @code{msgexec} option}
Output version information and exit.
@end table