start

# prop2po and po2prop

Convert between Java property files (.properties) and Gettext PO format.

## Usage

    prop2po [options] <property> <po>
    po2prop [options] -t <template> <po> <property>

Where:

<property> | is a directory containing property files or an individual property file
<po> | is a directory containing PO files and an individual property file
<template> | is a directory of template property files or a single template property file

Options (prop2po):

--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 properties format
-xEXCLUDE, --exclude=EXCLUDE | exclude names matching EXCLUDE from input paths
-oOUTPUT, --output=OUTPUT | write to OUTPUT in po, pot formats
-tTEMPLATE, --template=TEMPLATE | read from TEMPLATE in properties format
--psyco=MODE | use psyco to speed up the operation, modes: none, full, profile
-P, --pot | output PO Templates (.pot) rather than PO files (.po)
--duplicates=DUPLICATESTYLE | what to do with duplicate strings (identical source text): merge (default), msgid_comment, msgctxt, keep, msgid_comment_all

Options (po2oo):

--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 properties format
-tTEMPLATE, --template=TEMPLATE | read from TEMPLATE in properties format
--psyco=MODE | use psyco to speed up the operation, modes: none, full, profile
--personality=TYPE | set the output behaviour: java (default), mozilla
--fuzzy | use translations marked fuzzy
--nofuzzy | don’t use translations marked fuzzy (default)

## Examples

These examples demonstrate most of the usefull invocations of prop2po:

### Creating POT files

    prop2po -P properties pot

Extract messages from properties directory and place them in a directory called pot. The -P option ensures that we create POT files instead of PO files.

    prop2po -P file.properties file.pot

Extract messages from file.properties and place them in file.pot.

### Creating PO files from existing work

    prop2po --duplicates=msgctxt -t reference zu zu-po

Extract all existing Zulu messages from zu directory and place the resultant PO files in a directory called zu-po. If you find duplicate messages in a file then use Gettext’s mgsctxt to disambiguate them. During the merge we use the .properties files in reference as templates and as the source of the English text for the msgid. Once you have your PO files you might want to use pomigrate2 to ensure that your PO files match the latest POT files.

### Createing .properties files from your translations

    po2prop -t reference zu-po zu

Using our translations found in zu-po and the templates found in reference we create a new set of property files in zu. These new property files will look exactly like those found in the templates, but with the text changed to the translation. Any fuzzy entry in our PO files will be ignored and any untranslated item will be placed in zu in English. The .properties file created will be based on the Java specification and will thus use escaped Unicode. Where

    ṽḁḽṻḝ

Will appear in the files as:

    \u1E7D\u1E01\u1E3D\u1E7B\u1E1D

To get output as used by Mozilla localisation do the following:

    po2prop --personality=mozilla -t reference zu-po zu

This will do exactly the same as above except that the output will now appear as real Unicode characters in UTF-8 encoding.

## Bugs

None known.