@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}. @vindex MSGEXEC_MSGID@r{, environment variable} @vindex MSGEXEC_LOCATION@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. @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