Weblate can be extended or customized using standard Django and Python ways. Always please consider contributing changes upstream so that everybody can benefit from your additions. Including your changes in Weblate itself will also reduce your maintenance costs - code in Weblate is taken care of when changing internal interfaces or refactoring the code.
Neither internal interfaces or templates are considered as stable API. Please review your customizations on every upgrade, the interface or their semantics might change without notice.
Creating Python module¶
If you are not familiar with Python, you might want to look into Python For Beginners which explains the basics and will point you to further tutorials.
We’re about to write custom Python code and we need place to store it - it’s
called a module in Python. Late we need to place somewhere where the Python
interpreter can import it - either in system path (usually something like
/usr/lib/python3.7/site-packages/) or in Weblate directory, which is
also added to the interpreter search path.
The best approach is to create a proper Python package out of your customization:
Place your Python module with check into folder which will match your package name. We’re using weblate_customization in following examples.
__init__.pyfile to the same directory. This ensures Python can import this whole package.
setup.pyin parent directory to describe your package:
from setuptools import setup setup( name = "weblate_customization", version = "0.0.1", author = "Michal Cihar", author_email = "email@example.com", description = "Sample Custom check for Weblate.", license = "BSD", keywords = "weblate check example", packages=['weblate_customization'], )
Now you can install it using pip install -e .
Once installed into Python path, you can use it in Weblate configuration, in most cases as fully qualified path (for example
Overall your module structure should look like:
weblate_customization ├── setup.py └── weblate_customization ├── __init__.py ├── addons.py └── checks.py
You can find example application for custimizing Weblate at <https://github.com/WeblateOrg/customize-example>, it covers all topics described below.
INSTALLED_APPS = ( # Weblate apps are here... # Add your customization as last 'weblate_customization', )
And then execute
./manage.py collectstatic --noinput, this will collect
static files served to clients.
Custom quality checks and auto fixes¶
You have implemented code for Custom automatic fixups or Customizing behavior and
now it’s time to install it into Weblate. First place them into your Python
module with Weblate customization (see Creating Python module). Then enabled it
is just matter of adding its fully-qualified path to Python class to
appropriate settings (
CHECK_LIST = ( 'weblate_customization.checks.FooCheck', )
First place them into your Python module with Weblate customization (see
Creating Python module). Then enabled it is just matter of adding its
fully-qualified path to Python class to appropriate settings
WEBLATE_ADDONS = ( 'weblate_customization.addons.ExamplePreAddon', )