Anpassen von Weblate#
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.
Warnung
Weder interne Schnittstellen noch Vorlagen gelten als stabile API. Bitte überprüfen Sie bei jedem Upgrade Ihre eigenen Anpassungen, da sich die Schnittstellen oder ihre Semantik ohne Vorankündigung ändern können.
Siehe auch
Erstellung eines Python-Moduls#
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.9/site-packages/
) oder im Weblate-Verzeichnis, das auch dem Suchpfad des Interpreters hinzugefügt wird.
Neu in Version 3.8-5: 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.
Noch besser ist es, wenn Sie Ihre Anpassungen in ein richtiges Python-Paket verwandeln:
Erstellen Sie einen Ordner für Ihr Paket (wir werden weblate_customization verwenden).
Erstellen Sie darin eine Datei
setup.py
, um das Paket zu beschreiben: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"], )
Erstellen Sie einen Ordner für das Python-Modul (auch
weblate_customization
genannt) für den Anpassungscode.Erstellen Sie darin eine
__init__.py
-Datei, um sicherzustellen, dass Python das Modul importieren kann.Dieses Paket kann nun mit pip install -e installiert werden. Weitere Informationen sind in Editable installs zu finden.
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
├── setup.py
└── 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.
Ändern des Logos#
Erstellen Sie eine einfache Django-App, die die statischen Dateien enthält, die Sie überschreiben möchten (siehe Erstellung eines Python-Moduls).
Das Branding erscheint in den folgenden Dateien:
icons/weblate.svg
Das Logo wird in der Navigationsleiste angezeigt.
logo-*.png
Web-Symbole je nach Bildschirmauflösung und Webbrowser.
favicon.ico
Von älteren Browsern verwendetes Websymbol.
weblate-*.png
Avatare für Bots oder anonyme Benutzer. Einige Webbrowser verwenden diese als Shortcut-Symbole.
email-logo.png
Wird in Benachrichtigungs-E-Mails verwendet.
Zu
INSTALLED_APPS
hinzufügen:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Führen Sie
weblate collectstatic --noinput
aus, um statische Dateien zu sammeln, die an Clients geliefert werden.
Benutzerdefinierte Qualitätsprüfungen, Erweiterungen und automatische Korrekturen#
So installieren Sie Ihren Code für Benutzerdefinierte automatische Korrekturen, Eigene Qualitätsprüfungen schreiben oder Schreiben einer Erweiterung in Weblate:
Platzieren Sie die Dateien in Ihr Python-Modul, das die Weblate-Anpassung enthält (siehe Erstellung eines Python-Moduls).
Fügen Sie den vollqualifizierten Pfad zur Python-Klasse in den entsprechenden Einstellungen (
WEBLATE_ADDONS
,CHECK_LIST
oderAUTOFIX_LIST
) hinzu:
# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)
# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)
# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)