start

po2tmx

Convert Gettext PO files to a TMX translation memory file. TMX is the Translation Memory eXchange format developed by LISA (Localization Industry Standards Association)

Usage

po2tmx [options] --language <target> <po> <tmx>

Where:

<po> is a PO file
<tmx> is a TMX file

Options:

--version show program's version number and exit
-h, --help show this help message and exit
--manpage output a manpage based on the help
--progress=PROGRESS show progress as: dots, none, bar, names, verbose
--errorlevel=ERRORLEVEL show errorlevel as: none, message, exception, traceback
-iINPUT, --input=INPUT read from INPUT in po, pot formats
-xEXCLUDE, --exclude=EXCLUDE exclude names matching EXCLUDE from input paths
-oOUTPUT, --output=OUTPUT write to OUTPUT in tmx format
--psyco=MODE use psyco to speed up the operation, modes: none, full, profile
-lLANG, --language=LANG set target language code (e.g. af-ZA) [required]
--source-language=LANG set source language code (default: en)

Examples

po2tmx -l xh browser.po browser.tmx

Use the Xhosa (xh) translations in the PO file browser.po to create a TMX file called browser.tmx

Bugs and issues

Markup stripping

po2tmx conforms to TMX v1.4 without stripping markup. See the tmx conformance page for more details.

It has not been widely tested so your mileage may vary.

TMX and PO in OmegaT

In some tools, like OmegaT, PO files are parsed without expanding escaped sequences, even though such tools use TMX for translation memory. Keep this in mind when using po2tmx, because po2tmx converts \n and \t to newlines and tabs in the TMX file. If such a TMX file is used while translating PO files in OmegaT, matching will be less than 100%.

In other tools, such as Swordfish, the PO comment “no-wrap” is interpreted in the same way as the equivalent function in XML, which may also lead to mismatches if TMXes from po2tmx are used.

There is nothing wrong with po2tmx, but if used in conjunction with tools that handle PO files differently, it may lead to less than perfect matching.

Tips

TMX with only unique segments

To create a TMX with no duplicates (in other words, only unique strings), use msgcat to first create a large PO file with non-uniques removed.

Steps for MS Windows:

1. Create a text file (say, allfiles.txt) that contains the paths of all the PO files (in Linux just use the “find” command). The file should contain one path per line (relative or absolute). In MS Windows, you can use PikyBasket. In MS Windows, make sure the file has no BOM.

2. Do: msgcat -f allfiles.txt -u -o bigpofile.po

3. Now do po2tmx on that bigpofile.po

The Toolkit's TMX versus other tools

Here is a page on support for toolkit tmx by other tools (mostly MS Windows).