A Weblate testreszabása¶
A Weblate bővíthető és testreszabható Django és Python segítségével. A módosítások forrásba történő visszajuttatásával mindenki számára előnyös lehetőségeket teremthet, valamint csökkentheti saját karbantartási költségeit. A Weblate kódját aktívan gondozzák, így a belső interfészek változása vagy a kód átalakítása során a testreszabott megoldások is naprakészek maradhatnak.
Tipp
A Weblate megjelenése is testreszabható a Megjelenés testreszabása oldalon keresztül.
Figyelem
Fontos megjegyezni, hogy sem a belső interfészek, sem a sablonok nem tekinthetők stabil API-nak. Érdemes minden frissítés után átvizsgálni a testreszabásokat, mivel az interfészek vagy azok működése értesítés nélkül is változhat.
Python modul létrehozása¶
Amennyiben nem ismeri a Pythont, érdemes először megismerkedni az alapokkal, például a Python kezdőknek útmutató segítségével, amely további oktatóanyagokat is ajánl.
Egyedi Python kód (modul) írásához szükséges egy hely, ahol ezt tárolni tudja – például a rendszer elérési útvonalán (általában valami hasonló: /usr/lib/python3.12/site-packages/) vagy a Weblate könyvtárában, amely szintén hozzá van adva az értelmező keresési útvonalához.
Tipp
Docker használata esetén Python modulokat helyezhet el a /app/data/python/ könyvtárban (lásd: Docker-konténer kötetek), így azok betölthetők a Weblate által, például egy beállítás-felülírási fájlból.
Még jobb megoldás, ha a testreszabását egy megfelelő Python csomag formájában készíti el:
Hozzon létre egy mappát a csomag számára (például weblate_customization néven).
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_customizationEbben a mappában hozzon létre egy
__init__.pyfájlt, hogy a Python importálni tudja a modult.This package can now be installed using uv pip install -e. More info to be found in Editable packages documentation.
Miután telepítette, a modult már használhatja a Weblate konfigurációjában (például:
weblate_customization.checks.FooCheck).
A csomagstruktúrája a így kell, hogy kinézzen:
weblate_customization
├── pyproject.toml
└── src
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
A Weblate testreszabására egy példát talál a következő címen: <https://github.com/WeblateOrg/customize-example>, amely az alábbi témákat is bemutatja.
Logó módosítása¶
Hozzon létre egy egyszerű Django alkalmazást, amely tartalmazza a lecserélendő statikus fájlokat (lásd: Python modul létrehozása).
A márkajelzés a következő helyeken jelenik meg:
icons/weblate.svgA navigációs sávban megjelenő logó.
logo-*.pngKülönböző felbontásokhoz és böngészőkhöz igazodó webikonok.
favicon.icoRégebbi böngészők által használt webikonok.
weblate-*.pngBotok vagy anonim felhasználók profilképei (amelyeket néhány böngésző parancsikonnál is megjeleníthet).
email-logo.pngÉrtesítő e-mailekben használt ikonok.
Adja hozzá az alkalmazást az
INSTALLED_APPSbeállításhoz:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Futtassa a
weblate collectstatic --noinputparancsot a statikus fájlok összegyűjtéséhez és kiszolgálásához.
Custom quality checks, add-ons, automatic suggestions and auto-fixes¶
To install your code for Egyéni automatikus javítások, Egyedi ellenőrzések írása, Egyedi gépi fordítás or Kiegészítő írása in Weblate:
Place the files into your Python module containing the Weblate customization (see Python modul létrehozása 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",)