---
name: "pospell"
section: "1"
platform: "linux"
package: "spellutils"
version: "0.7+debian-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pospell"
---

# pospell(1)

Run a program on the translation strings of a .po-file

## NAME

pospell - Run a program on the translation strings of a .po-file

## SYNOPSIS

**pospell \[-l** *language* **\] \[-fsv\]** **-n** *pofile* **-p** *program* **\[-- \[** *arguments...* **\]\]**

## DESCRIPTION

**pospell** copies the translations from the *pofile* to a temporary file (called the *spellfile*) and then calls *program* with its *arguments*. *program* is supposed to somehow change the *spellfile*. It is typically a spell checker. Afterwards the possibly changed translations in *spellfile* is copied back into the *pofile*.

If *pofile* is specified as *-* then **pospell** will act as a filter, i.e. standard input and standard output will be used.

**%f** in the *arguments* will be expanded to the name of the *spellfile*, or **-** if the -f option is used. Use **%%** for a real % character.

All comment lines in the  *pofile* are replaced with lines with "#" as the only character in the *spellfile*. The msgid strings with original text in the *pofile* are replaced with lines with "\>" and "\]" as the only characters in the *spellfile*. The msgstr strings with file headers (i.e. strings without corresponding msgid strings) are replaced with lines with ")" and "\]" as the only characters in the *spellfile*. Don't change or remove these lines from the *spellfile* - they are used when the *spellfile* and the *pofile* are merged together after running the *program*.

The normal msgstr strings are copied to the *spellfile* with some changes: 1) The word msgstr and everything else before the string is replaced by a "+" character. 2) Strings with C escape sequences followed by a letter like "one\\ttwo" are split to parts like "one\\t" "two". 3) Leading whitespace in continuation lines is removed. The changes of kind 1) and 2) are undone when the *spellfile* is copied back into the *pofile*, but removed whitespace will not be restored.

## OPTIONS

- \-f

  The called program is a filter so don't make a temporary file, but pipe the *spellfile* to its standard input and read it back from its standard output.

- \-l language

  Only translations with the indicated language code are copied to the *spellfile*.

- \-s

  Quit with an error message if unrecognized items are found in the *pofile* or *spellfile*.

- \-v

  Print the version and exit.

## FILES

**pospell** uses one or two temporary files with names given by the [**mkstemp**(3)](/mkstemp/3.md) or the [**tmpnam**(3)](/tmpnam/3.md) function.

## BUGS

If some system call gives an unexpected error **pospell** will stop immediately with an error message leaving its temporary files.

## AUTHOR

Byrial Jensen \<byrial@image.dk\>

## SEE ALSO

The GNU gettext utilities.

[**newsbody**(1)](/newsbody/1.md).
