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 a /app/data/python/ könyvtárba is helyezhet (lásd: Docker-konténer kötetek), így ezek betölthetők a Weblate által, például egy beállítás felülírási fájl segítségével.
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).
Ebben a mappában hozzon létre egy
setup.pyfájlt a csomag leírására:from setuptools import setup setup( name="weblate_customization", version="0.0.1", author="Your name", author_email="yourname@example.com", description="Sample Custom check for Weblate.", license="GPLv3+", keywords="Weblate check example", packages=["weblate_customization"], )
A testreszabási kódok számára hozzon létre egy mappát (szintén
weblate_customizationnéven).Ebben a mappában hozzon létre egy
__init__.pyfájlt, hogy a Python importálni tudja a modult.Az így létrehozott csomag pip install -e paranccsal telepíthető. Erről bővebb információ a Editable installs oldalon található.
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
├── setup.py
└── 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.
Egyedi minőség-ellenőrzések, kiegészítők és automatikus javítások¶
Ha saját kódot szeretne telepíteni Egyéni automatikus javítások, Egyedi ellenőrzések írása vagy Kiegészítő írása céljára a Weblate-ben:
Helyezze el a fájlokat a Weblate testreszabására létrehozott Python modulban (lásd: Python modul létrehozása).
Adja meg az osztály teljesen kvalifikált útvonalát a megfelelő beállításokban (
WEBLATE_ADDONS,CHECK_LISTvagyAUTOFIX_LIST):
# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)
# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)
# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)