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
Make sure wagtail.contrib.modeladmin
and wagtailsystemtext
is added to your INSTALLED_APPS
.
INSTALLED_APPS = (
# ...
'wagtail.contrib.modeladmin',
'wagtailsystemtext',
)
Then add SiteSystemTextMiddleware to your middlewares, make sure you add it after wagtail.wagtailcore.middleware.SiteMiddleware
MIDDLEWARE_CLASSES = (
# ...
'wagtail.wagtailcore.middleware.SiteMiddleware',
'wagtailsystemtext.middlewares.SiteSystemTextMiddleware',
)
Done!
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('my_text')
_st('main_label', group='buttons')
_st('main_label', group='buttons', default='My label')
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('my_text')
_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" %}
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 samelist_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)
These hooks will automatically bump the application version when using git flow release ...
chmod +x $PWD/git-hooks/bump-version.sh
ln -nfs $PWD/git-hooks/bump-version.sh .git/hooks/post-flow-release-start
ln -nfs $PWD/git-hooks/bump-version.sh .git/hooks/post-flow-hotfix-start
-
trans
template tag support - Wagtail admin view with site permissions
- Cache-rebild on save through admin
- Default text support (on declaration)
- Lazy text transforms
- Add setting for fallbacking to default if string is empty
- Automatic tag discovery
- 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.