Weblate anpassen¶
Erweiterungen und Anpassungen mit Django und Python. Tragen Sie Ihre Änderungen Upstream bei, damit alle davon profitieren können. Das reduziert Ihre Wartungskosten; Code in Weblate wird bei Änderungen an internen Schnittstellen oder beim Refactoring des Codes berücksichtigt.
Hinweis
Sie können das Aussehen von Weblate auch unter Erscheinungsbild anpassen anpassen.
Warnung
Weder interne Schnittstellen noch Vorlagen gelten als stabile API. Bitte überprüfen Sie bei jedem Upgrade Ihre Anpassungen, da sich die Schnittstellen oder ihre Semantik ohne Vorankündigung ändern können.
Siehe auch
Ein Python-Modul erstellen¶
Wenn Sie mit Python noch nicht vertraut sind, sollten Sie sich Python für Anfänger ansehen, wo die Grundlagen erklärt werden und auf weitere Tutorials verwiesen wird.
Um eine Datei mit benutzerdefiniertem Python-Code (Modul genannt) zu schreiben, wird ein Speicherort benötigt, entweder im Systempfad (normalerweise etwas wie /usr/lib/python3.12/site-packages/) oder im Weblate-Verzeichnis, das auch dem Suchpfad des Interpreters hinzugefügt wird.
Hinweis
Wenn Sie Docker verwenden, können Sie Python-Module in /app/data/python/ ablegen (siehe Docker-Container-Volumes), sodass sie von Weblate geladen werden können, zum Beispiel aus einer Settings-Override-Datei.
Besser noch, machen Sie aus Ihren Anpassungen ein richtiges Python-Paket:
Erstellen Sie einen Ordner für Ihr Paket (wir verwenden weblate_customization).
Erstellen Sie darin eine Datei
pyproject.toml, um das Paket zu beschreiben:[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 = []
Erstellen Sie einen Ordner für das Python-Modul:
src/weblate_customizationErstellen Sie darin eine
__init__.py-Datei, um sicherzustellen, dass Python das Modul importieren kann.Dieses Paket kann nun mit uv pip install -e installiert werden. Weitere Informationen finden Sie in der Dokumentation Editable packages.
Nach der Installation kann das Modul in der Weblate-Konfiguration verwendet werden (zum Beispiel
weblate_customization.checks.FooCheck).
Die Struktur Ihres Pakets sollte wie folgt aussehen:
weblate_customization
├── pyproject.toml
└── src
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
Ein Beispiel für die Anpassung von Weblate finden Sie unter <https://github.com/WeblateOrg/customize-example>, es deckt alle unten beschriebenen Themen ab.
Das Logo ändern¶
Erstellen Sie eine einfache Django-App, welche die statischen Dateien enthält, die Sie überschreiben möchten (siehe Ein Python-Modul erstellen).
Das Branding erscheint in den folgenden Dateien:
icons/weblate.svgDas Logo wird in der Navigationsleiste angezeigt.
logo-*.pngWeb-Symbole je nach Bildschirmauflösung und Webbrowser.
favicon.icoVon älteren Browsern verwendetes Websymbol.
weblate-*.pngAvatare für Bots oder anonyme Benutzer. Einige Webbrowser verwenden diese als Shortcut-Symbole.
email-logo.pngWird in Benachrichtigungs-E-Mails verwendet.
Zu
INSTALLED_APPShinzufügen:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Führen Sie
weblate collectstatic --noinputaus, um statische Dateien zu sammeln, die an Clients geliefert werden.
Benutzerdefinierte Qualitätsprüfungen, Erweiterungen, automatische Vorschläge und automatische Korrekturen¶
So installieren Sie Ihren Code für Benutzerdefinierte automatische Korrekturen, Eigene Qualitätsprüfungen schreiben, Benutzerdefinierte maschinelle Übersetzung oder Eine Erweiterung schreiben in Weblate:
Platzieren Sie die Dateien in Ihr Python-Modul, das die Weblate-Anpassung enthält (siehe Ein Python-Modul erstellen oder Code anpassen).
Fügen Sie den vollqualifizierten Pfad zur Python-Klasse in den entsprechenden Einstellungen hinzu:
# 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",)