Personalizar Weblate¶
Extienda y personalice utilizando Django y Python. Contribuya sus cambios upstream tal que todos puedan beneficiarse. Esto reduce su costes de mantenimiento; código en Weblate es cuidado de cuando cambie interfaces internos o refactoricen el código.
Consejo
Además puede personalizar la apariencia de Weblate en Personalización de la apariencia.
Advertencia
Ni las interfaces internas ni las plantillas se consideran una API estable. Revise sus personalizaciones con cada actualización; las interfaces o su semántica pueden cambiar sin previo aviso.
Ver también
Crear un módulo de Python¶
Si no es familiar con Python, quizá quiera buscar en Python For Beginners, explicando lo básico y apuntanto a más tutoriales.
Para escribir un archivo con código Python personalizado (llamado módulo), se necesita un lugar donde almacenarlo, ya sea en la ruta del sistema (generalmente algo como /usr/lib/python3.12/site-packages/) o en el directorio Weblate, que también se agrega a la ruta de búsqueda del intérprete.
Consejo
Al usar using Docker, puede colocar módulos de Python en /app/data/python/ (consulte Volúmenes de contenedores Docker) para que Weblate pueda cargarlos, por ejemplo, desde un archivo de anulación de configuración settings override file.
Mejor aún, convierta su personalización en un paquete de Python adecuado:
Crea una carpeta para tu paquete (usaremos 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_customizationDentro de él, cree un archivo
__init__.pypara garantizar que Python pueda importar el módulo.This package can now be installed using uv pip install -e. More info to be found in Editable packages documentation.
Una vez instalado, el módulo puede ser utilizado en la configuración Weblate (por ejemplo
weblate_customization.checks.FooCheck).
Su estructura de paquete parecería similar a esta:
weblate_customization
├── pyproject.toml
└── src
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
Puede encontrar un ejemplo de personalización de Weblate en <https://github.com/WeblateOrg/customize-example>, cubre todo el tema descrito a continuación.
Cambiar el logo¶
Cree una app Django simple conteniendo los archivos estáticos que desea sobrescribir (consulte Crear un módulo de Python).
La marca aparece en los archivos siguientes:
icons/weblate.svgLogo mostrado en la barra de navegación.
logo-*.pngLos iconos de la web dependen en la resolución de la pantalla y el explorador-web.
favicon.icoIcono web empleado por navegadores heredados.
weblate-*.pngAvatares para bots o usuarios anónimos. Algunos exploradores de web utilizan estos como enlaces breves de iconos.
email-logo.pngUtilizado en correos-e de notificaciones.
Añádalo a
INSTALLED_APPS:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Ejecute
weblate collectstatic --noinput, para colección estática de archivos servidos a clientes.
Custom quality checks, add-ons, automatic suggestions and auto-fixes¶
To install your code for Correcciones automáticas personalizadas, Escribir los propios controles, Traducción automática personalizada or Complemento de escritura in Weblate:
Place the files into your Python module containing the Weblate customization (see Crear un módulo de Python or Personalización del código).
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",)