Skip to main content

Simplified Wagtail system text management

Project description

Build Status PyPI version

Wagtail System Text

This is a library that enables cms editors to update static test in Wagtail. By using identifiers developers mark the strings that can be updated by the editor/moderator from the cms.

A template identifier can look like this {% systemtext "title" %}. When this identifier are evaluated it will be added to the cms under the section Settings / System Text under the name title. The entry has a field called string that can be updated, this is the text that will be rendered to the website users.

Identifiers can also be grouped, by using the group argument {% systemtext "title" group "headlines" %} we can make management easier, identifiers without group will be assigned to the general group.

By default identifiers will added in lazy mode, so for instance when a site renders a idenifier it will be added to that sites set of identifiers. The are also management commands that both searches through your code base and finds suiteable identifiers (find_and_add_systemtext), syncs then betweeen sites (sync_systemtext) and manual add/delete commands (add_systemtext / delete_systemtext).


  • Python 2.7

  • Django 1.8+

  • Wagtail 1.7+


Install the library with pip:

$ pip install wagtailsystemtext

Quick Setup

Make sure wagtail.contrib.modeladmin and wagtailsystemtext is added to your INSTALLED_APPS.

    # ...

Then add SiteSystemTextMiddleware to your middlewares, make sure you add it after wagtail.wagtailcore.middleware.SiteMiddleware

    # ...



Overall the implementation follows the same convention of django translations.


This is how you work with regular text, supply identifer and group and retrive the systemtext string.

from wagtailsystemtext.utils import systemtext as _st

_st('main_label', group='buttons')
_st('main_label', group='buttons', default='My label')

Lazy strings

Lazy strings are run when called upon, when for instance you want to initialize a systemtext retrival before the middleware has run. Like in a admin interface.

from wagtailsystemtext.utils import systemtext_lazy as _st

_st('main_label', group='buttons')
_st('main_label', group='buttons', default='My label')


Systemtext contains a templatetag called systemtext, that behaves in the same way as Djangos {% trans... %}

{% load systemtext %}

{% systemtext "my_text" %}
{% systemtext "main_label" group "buttons" %}
{% systemtext "main_label" group "buttons" default "My label" %}

Management commands

  • find_and_add_systemtext: Finds the systemtext identifiers in your applications (by looking for _st and {% systemtext ... %}) and adds them to each wagtail site).

  • add_systemtext: Add identifier to site(s)

  • delete_systemtext: Remove identifiers from site(s)

  • sync_systemtext: Sync identifiers between sites to make sure they contain the same

  • list_systemtext: List all active systemtext


  • SYSTEMTEXT_CACHE_PREFIX: Cache prefix ("wagtailsystemtext" by default)

  • SYSTEMTEXT_CACHE_EXPIRY: Cache expiry in seconds (10 min by default)

  • SYSTEMTEXT_REBUILD_ON_SAVE: If cache should be rebuilt on save (True by default)

  • SYSTEMTEXT_USE_DEFAULT_ON_EMPTY: If present, use default value when string is empty (False by default)

Release start

These hooks will automatically bump the application version when using git flow release ...

chmod +x $PWD/git-hooks/
ln -nfs $PWD/git-hooks/ .git/hooks/post-flow-release-start
ln -nfs $PWD/git-hooks/ .git/hooks/post-flow-hotfix-start


  • [x] trans template tag support

  • [x] Wagtail admin view with site permissions

  • [x] Cache-rebild on save through admin

  • [x] Default text support (on declaration)

  • [x] Lazy text transforms

  • [x] Add setting for fallbacking to default if string is empty

  • [x] Automatic tag discovery

  • [x] Sync command between sites

  • [ ] Group filter in Wagtail admin

  • [ ] Last accessed timestamps

  • [ ] blocktrans template tag support


Want to contribute? Awesome. Just send a pull request.


Wagtail System Text is released under the MIT License.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wagtailsystemtext-1.2.2.tar.gz (13.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page