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.
Voir aussi
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 :
Créez un dossier pour votre package (nous utiliserons weblate_customization).
Within it, create a
pyproject.tomlfile 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 = []
Create a folder for the Python module:
src/weblate_customizationWithin it, create a
__init__.pyfile to ensure Python can import the module.This package can now be installed using uv pip install -e. More info to be found in Editable packages documentation.
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.
Changer le logo¶
Create a simple Django app containing the static files you want to overwrite (see Création d’un module Python).
La marque apparaît dans les fichiers suivants :
icons/weblate.svgLogo affiché dans la barre de navigation.
logo-*.pngIcônes Web dépendant de la résolution de l’écran et du navigateur Web.
favicon.icoIcône Web utilisée par les navigateurs anciens.
weblate-*.pngAvatars pour les bots ou les utilisateurs anonymes. Certains navigateurs web les utilisent comme icônes de raccourci.
email-logo.pngUtilisé dans les courriels de notification.
Add it to
INSTALLED_APPS:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Exécutez
weblate collectstatic --noinput, pour collecter les fichiers statiques servis aux clients.
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:
Place the files into your Python module containing the Weblate customization (see Création d’un module Python or Customizing code).
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",)