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.

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:

  1. Erstellen Sie einen Ordner für Ihr Paket (wir werden weblate_customization verwenden).

  2. 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"],
    )
    
  3. Erstellen Sie einen Ordner für das Python-Modul (auch weblate_customization genannt) für den Anpassungscode.

  4. Erstellen Sie darin eine __init__.py-Datei, um sicherzustellen, dass Python das Modul importieren kann.

  5. Dieses Paket kann nun mit pip install -e installiert werden. Weitere Informationen sind in Editable installs zu finden.

  6. 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.

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:

  1. Platzieren Sie die Dateien in Ihr Python-Modul, das die Weblate-Anpassung enthält (siehe Erstellung eines Python-Moduls).

  2. Fügen Sie den vollqualifizierten Pfad zur Python-Klasse in den entsprechenden Einstellungen (WEBLATE_ADDONS, CHECK_LIST oder AUTOFIX_LIST) hinzu:

# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)