Personnaliser Weblate

Étendez et personnalisez Weblate avec Django et Python. Intégrez vos modifications au projet principal pour que tous puissent en bénéficier. Cela réduit vos coûts de maintenance : le code de Weblate est automatiquement mis à jour lors de la modification des interfaces internes ou de la refactorisation.

Indication

You can also customize Weblate look in Personnalisation de la présentation.

Avertissement

Neither internal interfaces nor templates are considered a stable API. Please review your customizations for every upgrade, the interfaces or their semantics might change without notice.

Création d’un module Python

Si vous n’êtes pas familier avec Python, vous pouvez consulter Python pour débutants, qui explique les bases et renvoie vers d’autres tutoriels.

To write a file with custom Python code (called a module), a place to store it is needed, either in the system path (usually something like /usr/lib/python3.12/site-packages/) or in the Weblate directory, which is also added to the interpreter search path.

Indication

When using Docker, you can place Python modules in /app/data/python/ (see Docker container volumes), so they can be loaded by Weblate, for example from a settings override file.

Mieux encore, transformez votre personnalisation en un véritable package Python :

  1. Créez un dossier pour votre package (nous utiliserons weblate_customization).

  2. Within it, create a pyproject.toml file to describe the package:

    [build-system]
    requires = ["uv_build>=0.8.18,<0.9.0"]
    build-backend = "uv_build"
    
    [project]
    name = "weblate-customization"
    version = "0.1.0"
    description = "Add your description here"
    requires-python = ">=3.13"
    dependencies = []
    
  3. Create a folder for the Python module: src/weblate_customization

  4. Within it, create a __init__.py file to ensure Python can import the module.

  5. This package can now be installed using uv pip install -e. More info to be found in Editable packages documentation.

  6. Une fois installé, le module peut être utilisé dans la configuration Weblate (par exemple weblate_customization.checks.FooCheck).

Your package structure should look like this:

weblate_customization
├── pyproject.toml
└── src
    └── weblate_customization
        ├── __init__.py
        ├── addons.py
        └── checks.py

Vous trouverez un exemple de personnalisation de Weblate à l’adresse <https://github.com/WeblateOrg/customize-example>, qui couvre tous les sujets décrits ci-dessous.

Custom quality checks, add-ons, automatic suggestions and auto-fixes

To install your code for Personnaliser les réparations automatiques, Rédiger ses propres contrôles, Traduction automatique personnalisée or Écrire un greffon in Weblate:

  1. Place the files into your Python module containing the Weblate customization (see Création d’un module Python or Customizing code).

  2. Add its fully-qualified path to the Python class in the dedicated settings:

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)

# Automatic suggestions
WEBLATE_MACHINERY += ("weblate_customization.machinery.SampleTranslation",)