Go to the first, previous, next, last section, table of contents.

# 4 Making the PO Template File

After preparing the sources, the programmer creates a PO template file. This section explains how to use `xgettext` for this purpose.

## 4.1 Invoking the `xgettext` Program

    xgettext [option] inputfile ...

``-a'`
``--extract-all'`
  Extract all strings.
``-c [tag]'`
``--add-comments[=tag]'`
  Place comment block with tag (or those preceding keyword lines) in output file.
``-C'`
``--c++'`
  Recognize C++ style comments.
``--debug'`
  Use the flags `c-format` and `possible-c-format` to show who was responsible for marking a message as a format string. The latter form is used if the `xgettext` program decided, the format form is used if the programmer prescribed it. By default only the `c-format` form is used. The translator should not have to care about these details.
``-d name'`
``--default-domain=name'`
  Use ``name.po'` for output (instead of ``messages.po'`). The special domain name ``-'` or ``/dev/stdout'` means to write the output to ``stdout'`.
``-D directory'`
``--directory=directory'`
  Change to directory before beginning to search and scan source files. The resulting ``.po'` file will be written relative to the original directory, though.
``-f file'`
``--files-from=file'`
  Read the names of the input files from file instead of getting them from the command line.
``--force'`
  Always write an output file even if no message is defined.
``-h'`
``--help'`
  Display this help and exit.
``-I list'`
``--input-path=list'`
  List of directories searched for input files.
``-j'`
``--join-existing'`
  Join messages with existing file.
``-k word'`
``--keyword[=keywordspec]'`
  Additional keyword to be looked for (without keywordspec means not to use default keywords). If keywordspec is a C identifer id, `xgettext` looks for strings in the first argument of each call to the function or macro id. If keywordspec is of the form ``id:argnum'`, `xgettext` looks for strings in the argnumth argument of the call. If keywordspec is of the form ``id:argnum1,argnum2'`, `xgettext` looks for strings in the argnum1st argument and in the argnum2nd argument of the call, and treats them as singular/plural variants for a message with plural handling. The default keyword specifications, which are always looked for if not explicitly disabled, are `gettext`, `dgettext:2`, `dcgettext:2`, `ngettext:1,2`, `dngettext:2,3`, `dcngettext:2,3`, and `gettext_noop`.
``-m [string]'`
``--msgstr-prefix[=string]'`
  Use string or "" as prefix for msgstr entries.
``-M [string]'`
``--msgstr-suffix[=string]'`
  Use string or "" as suffix for msgstr entries.
``--no-location'`
  Do not write ``#: filename:line'` lines.
``-n'`
``--add-location'`
  Generate ``#: filename:line'` lines (default).
``--omit-header'`
  Don't write header with ``msgid ""'` entry. This is useful for testing purposes because it eliminates a source of variance for generated `.gmo` files. We can ship some of these files in the GNU `gettext` package, and the result of regenerating them through `msgfmt` should yield the same values.
``-p dir'`
``--output-dir=dir'`
  Output files will be placed in directory dir.
``-s'`
``--sort-output'`
  Generate sorted output and remove duplicates.
``--strict'`
  Write out a strict Uniforum conforming PO file.
``-v'`
``--version'`
  Output version information and exit.
``-x file'`
``--exclude-file=file'`
  Entries from file are not extracted.

Search path for supplementary PO files is: ``/usr/local/share/nls/src/'`.

If inputfile is ``-'`, standard input is read.

This implementation of `xgettext` is able to process a few awkward cases, like strings in preprocessor macros, ANSI concatenation of adjacent strings, and escaped end of lines for continued strings.

Go to the first, previous, next, last section, table of contents.