Translate Toolkit & Pootle

Tools to help you make your software local

User Tools

Pootle developer guide

This is a collection of links and pages for people interested in Pootle development. People interested in development or related issues will want to join our mailing lists. Translate-devel is the development mailing list (more geared towards the toolkit) and translate-pootle is more geared towards Pootle users and Pootle related issues.

Pootle is built upon the translate-toolkit. The best place for information is probably the Toolkit Developer Guide:

Pootle 2 is implemented using Django:

Some other useful links:


Check the debugging options in You might also prefer running Pootle with the built-in Django server that can handle some changes without restarting:

./ runserver

Also consider disabling caching, or setting the times very low.

Creating the POT file

If you made any customisations to templates or the strings in code, you might want to regenerate the POT file for the translation of the Pootle UI.



These are ancient, but maybe interesting things. Don't assume that any of this has any relevance to anything, not even Pootle 1.

  • metadata - Page by David about storing metadata, possibly in a database, etc.
  • GSoC Docs - Documentation of the work by Gintas for the Google Summer of Code


Live translation

Pootle can translate live. That is if you translate Pootle using itself your translations will be available immediately. You can translate Pootle from any running instance of Pootle that has an editable Pootle project.

To actually ensure that your translations are available to all through the next Pootle release please translate on

Creating POT files

This step is only needed if you need to create a new POT file through some code modifin or for releases or to identify why something remains untranslated. To create the pootle.pot file, run the following command in the Pootle installation directory:


This will produce a file called pootle.pot, which can be converted to a PO file by renaming or running pot2po.

You also need to create a jToolkit.pot if you don't have one, in the jToolkit installation directory, run

xgettext --language=Python --keyword=localize --keyword=nlocalize:1,2 --default-domain=jToolkit --copyright-holder="St James Software" `find .  -name "*.py"`