---
name: "xpot"
section: "1"
platform: "linux"
package: "po-utils"
version: "0.5-3"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/xpot"
---

# xpot(1)

produce PO template files

## NAME

xpot - produce PO template files

## SYNOPSIS

**xpot \[*OPTION*\]... \[*FILE*\]...**

## DESCRIPTION

This tool produces a PO template file on standard output, given a collection of source files.  It currently handles C, C++, Emacs LISP, and Python sources, as well as from pre-existing PO files.  It is meant to handle Awk, Perl or shell scripts, when everything will be ready for these.  And in fact, anything that could help internationalisation.

To find out the language of a program, *xpot* looks for hints in the extension of the file name, or else, in the contents of the first two lines of the file, looking for \`#!PATH/env PROGRAM', \`#!PATH/PROGRAM', \`-\*-mode:MODE-\*-' or \`-\*-MODE-\*-' in the first two lines.

One option to *xpot* allows for automatic extraction of all doc strings, which never need explicit marking in either Emacs LISP or Python, for this reason.  Translation of doc string might be useful in highly interactive programs, giving access to interpreter facilities.

## PYTHON

Adjacent strings (those only separated by whitespace or comments) are correctly concatenated at extraction time.  Strings are considered translatable if they are used within \_(STRING) or gettext(STRING) constructs, other keywords may be added, of course.

To palliate the lack of a pre-processor, strings which translation should be delayed may be marked as translatable by using one of the following special constructs, which are already valid Python:

       ''"text"        ''r"text"\
        ""'text'        ""r'text'\
        ''"""text"""    ''r"""text"""\
        ""'''text'''    ""r'''text'''

Doc strings, if their extraction has been selected, should be correctly found even after very complex initialisation of keyword parameters.

## OPTIONS

- **--help**

  Print a short help for this command and exit.

- **--version**

  Print the currently installed version of *po-utils* on the standard output.

- **-d**, **--doc-strings**

  Translate so-called documentation strings.

- **-k**, **--keyword**=*SYMBOL*

  Translate first argument if function is *SYMBOL*.

- **-o**, **--output-file**=*NAME*

  Write output to a file called *NAME* instead of standard output.

- **-n**, **--no-header**

  Do not generate the PO file header.

- **-p**, **--domain**=*DOMAIN*

  Set the domain name to *DOMAIN*, default is "PACKAGE".

- **-v**, **--release**=*RELEASE*

  Set the release number to *RELEASE*, default is "VERSION".

- **-l**, **--scanner-debug**

  Debug the scanner.

- **y**, **--parser-debug**

  Debug the parser.

## KNOWN PROBLEMS

Mule files may not be analysed correctly, if a character uses many bytes.

## COPYRIGHT

*po-utils* was written by François Pinard \<pinard@iro.umontreal.ca\>.

This man page was written for the Debian project by Sebastian Rittau \<srittau@debian.org\>. It is based on the README file of the *po-utils* package.
