The recorder is attached to an existing translation function keeps
track of the inputs and outputs.
The result is a *locales* directory structure::
This structure is written on process exit.
Note that when the recorder is initialized, it imports any existing
message catalog. That is, it's robust to process startup/shutdown and
can operate continuously.
In Python-code, enable the translation recorder by wrapping an
existing translation function.
The easiest way to wire this up is by patching the module that holds
the function (if possible)::
# Patch Zope's translation function
zope.i18n.translate = translationrecorder.Recorder(
There's integration included for the Pyramid and Zope/Plone
Set the environment variable ``RECORD_TRANSLATIONS`` to an existing
*locales* directory and run your server process::
$ mkdir ./locales
$ RECORD_TRANSLATIONS=./locales bin/paster serve ...
This requires that the `translationrecorder` module is imported. This
is handled automatically on Plone. For other systems::
Technically, the package applies patches against the global
translation functions of the applicable frameworks.
Malthe Borch <email@example.com>
- Fixed an issue where a translation would always appear with a
default text, even when not present in catalog.
- Fixed an issue where a message with a mapping would not get properly
decoded into a message id.
- Fixed issue where a quote appearing in a message id or translation
would corrupt on save.
- Fixed issue where generated .po-files would result in a syntax error
on compilation using ``pythongettext`` due to a missing initial
dummy message translation.
- Patch the translation domain instead of the (higher-level)
global translation function.
This fixes an issue where messages would not be recorded with the
proper translation domain and the used target languages would not be
- Initial public release.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.