POE(1) General Commands Manual POE(1)

poe.po file editor

poe -h | --help | -V | --full-version | -v | --version

poe filename.po

poe is a .po (GNU gettext) file editor with a terminal UI.

, --help
Show option summary.
, --full-version
Show full version information: like -v, followed by copyright notice and defines set in config.h.
, --version
Show version information: program version and source git repository commit date.

Main window key bindings are as follows:

Esc Close dialog or clear error
Enter Edit entry
H or F1 Show help dialog
/ or F7 Incremental search (end input with Enter)
n or F3 Find next
N or F4 Find previous
u or F8 Go to next untranslated entry
f or F9 Go to next fuzzy entry
w or C-S Save file (with backup)
g or Home Go to first entry
C-B or PgUp Go to previous page
k or Up Go to previous entry
j or Down Go to next entry
C-F or PgDn Go to next page
G or End Go to last entry
z or C-Z Toggle fuzzy flag
q or C-Q Quit

Edit dialog key bindings are as follows:

C-S Update entry and close dialog
C-B or PgUp Update entry and edit previous entry
C-F or PgDn Update entry and edit next entry
C-P Show previous plural form of msgstr
C-N Show next plural form of msgstr
Escape Cancel changes and close dialog
C-C Yank (copy) current msgstr to paste buffer
C-V Paste the contents of paste buffer into current msgstr
F8 Go to next untranslated entry
F9 Go to next fuzzy entry
F5 Copy msgid to edit box as current msgstr
F6 Toggle focus between info box and edit box
C-Z Toggle fuzzy flag
C-A or Home Go to start of line
C-E or End Go to end of line
C-U Erase to start of line
C-K Erase to end of line
C-R Go to previous word
C-T Go to next word
C-W Erase previous word
Up Go to previous line
Left Go to previous character
Right Go to next character
Down Go to next line

In the table above, “current msgstr” refers to the situation when there are multiple msgstrs, representing different plural forms. Only the currently shown plural form is affected.

When the info box is focused, arrow keys, C-B/C-F (PgUp/PgDn) and C-A/C-E (Home/End) keys scroll the info box.

When the search box is open, relevant text editing and movement commands from the edit box also apply. For example, C-R moves one word backwards, and C-W deletes one word backwards.

Status line is comprised of a number of segments, by default three. The central segment displays the current message number, the total messages count, then in parentheses: number of untranslated messages, number of fuzzy messages and the number of obsolete messages. Obsolete messages are messages whose msgid doesn't match any msgid in the message catalog anymore, and are commented out in the .po file using #~ comments.

Message flags are shown to the left of the msgid in the main window and the statusbar of the edit box. They mean the following:

C c-format flag
F fuzzy flag
P Message has plural forms
N no-c-format flag

poe has some rudimentary checks of the translated messages built in. First, when saving changes in the edit box, if the msgid has a newline character (\n), a dot (.) or a space ( ) at the end, and the corresponding msgstr doesn't, msgstr being saved will have its ending character made to match the one from the msgid. This feature can be disabled by commenting out the MATCH_MSGSTR_ENDING feature flag.

Second, if the numbers of newline characters (\n), or, additionally, dots when WARN_COUNT_DOTS is set, in msgid and msgstr don't match, msgstr will be shown in a different color on the main screen. If the number of newlines was intended, you can simply ignore this warning. Otherwise, it can be useful to detect unwanted discrepancies in formatting between the original message and the translation.

The poe utility exits 0 on success, and >0 if an error occurs.

Strahinya Radich <contact@strahinja.org>, 2021-2024

Bugs can be reported using the ticket tracker at: https://todo.sr.ht/~strahinja/poe

  • UTF-8 character set is assumed.
  • CJK characters are unsupported/problematic. This is a limitation of termbox library. See https://github.com/nsf/termbox for more details.
  • Only one file can be edited at a time, and no additional files can be loaded at runtime. This is a design decision.
  • Unless the define CREATE_BACKUPS is commented out before compilation, the directory of the edited file must be writable by the user in order to write the changes to the file. This is due to creating backups in order to avoid the potential data loss under specific circumstances (loss of power during write).
  • Only the flags fuzzy, c-format and no-c-format are supported. Other flags will be stripped on save. This is a design decision.
June 5, 2024 OpenBSD 7.5