---
name: "xml2po"
section: "1"
platform: "linux"
package: "gnome-doc-utils"
version: "0.20.10-5"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/xml2po"
---

# xml2po(1)

program to create a PO-template file from a DocBook XML file and merge it back into a (translated) XML file

## NAME

xml2po - program to create a PO-template file from a DocBook XML file and merge it back into a (translated) XML file

## SYNOPSIS

**xml2po** \[**OPTIONS**\] \[*XMLFILE*\]

## DESCRIPTION

This manual page documents briefly the **xml2po** command.

**xml2po** is a simple Python program which extracts translatable content from free-form XML documents and outputs gettext compatible POT files. Translated PO files can be turned into XML output again.

It can work it´s magic with most "simple" tags, and for complicated tags one has to provide a list of all tags which are "final" (that will be put into one "message" in PO file), "ignored" (skipped over) and "space preserving".

## OPTIONS

The program follows the usual GNU command line syntax, with long options starting with two dashes (\`-´). A summary of options is included below.

- **-a**, **--automatic-tags**

  Automatically decide if tags are to be considered "final" or not.

- **-k**, **--keep-entities**

  Don´t expand entities (default). See also the **-e** option.

- **-e**, **--expand-all-entities**

  Expand all entities (including SYSTEM ones).

- **-m**, **--mode=***TYPE*

  Treat tags as type *TYPE* (default: docbook).

- **-o**, **--output=***FILE*

  Print resulting text (XML while merging translations with "-p" or "-t" options, POT template file while extracting strings, and translated PO file with "-r" option) to the given FILE.

- **-p**, **--po-file=***FILE*

  Specify a PO FILE containing translation and output XML document with translations merged in.

- **-r**, **--reuse=***FILE*

  Specify a translated XML document in FILE with the same structure to generate translated PO file for XML document given on command line.

- **-t**, **--translation=***FILE*

  Specify a MO file containing translation and output XML document with translations merged in.

- **-u**, **--update-translation=***LANG.po*

  Update a PO file using **msgmerge**.

- **-l**, **--language=***LANG*

  Explicitly set language of the translation.

- **-h**, **--help**

  Show summary of options.

- **-v**, **--version**

  Show version of program.

## EXAMPLES

### Creating POT template files

To create a POT template book.pot from an input file book.xml, which consists of chapter1.xml and chapter2.xml (external entities), run:

```
				/usr/bin/xml2po -o book.pot book.xml chapter1.xml chapter2.xml
```

To expand entities use the **-e** option:

```
				/usr/bin/xml2po -e -o book.pot book.xml
```

### Creating translated XML files (merging back PO files)

After translating book.pot into LANG.po, merge the translations back by using **-p** option for each XML file:

```
				/usr/bin/xml2po -p LANG.po -o book.LANG.xml book.xml
				/usr/bin/xml2po -p LANG.po -o chapter1.LANG.xml chapter1.xml
				/usr/bin/xml2po -p LANG.po -o chapter2.LANG.xml chapter2.xml
```

If you used the **-e** option to expand entities, you should use it again to merge back the translation into an XML file:

```
				/usr/bin/xml2po -e -p LANG.po -o book.LANG.xml book.xml
```

### Updating PO files

When base XML file changes, the real advantages of PO files come to surface. There are 2 ways to merge the translation. The first is to produce a new POT template file (additionally use the **-e** if you decided earlier to expand entities). Afterwards run **msgmerge** to merge the translation with the new POT file:

```
				/usr/bin/msgmerge -o tmp.po LANG.po book.pot
```

Now rename tmp.po to LANG.po and update your translation. Alternatively, **xml2po** provides the **-u** option, which does exactly these two steps for you. The advantage is, that it also runs **msgfmt** to give you a statistical output of translation status (count of translated, untranslated and fuzzy messages). Additionally use the **-e** if you decided earlier to expand entities:

```
				/usr/bin/xml2po -u LANG.po book.xml
```

## SEE ALSO

**msgmerge** (1), **msgfmt** (1)

## AUTHOR

This manual page was written by Daniel Leidert daniel.leidert@wgdd.de for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation.

## COPYRIGHT

Copyright © 2005 Daniel Leidert\
