Add-ons ontwikkelen

Add-ons zijn een manier om de werkwijze voor vertalen in Weblate aan te passen.

class weblate.addons.base.BaseAddon(storage: Addon)

Basisklasse voor add-ons van Weblate.

classmethod can_install(component: Component, user: User | None) bool

Controleren of add-on compatibel is met het opgegeven onderdeel.

component_update(component: weblate.trans.models.Component) None

Gebeurtenisafhandeling voor bijwerken onderdeel.

configure(configuration: dict[str, Any]) None

Configuratie opslaan.

daily(component: weblate.trans.models.Component) None

Dagelijkse afhandeling gebeurtenissen.

classmethod get_add_form(user: User | None, *, component: Component | None = None, project: Project | None = None, **kwargs) BaseAddonForm | None

Formulier configuratie terugsturen voor toevoegen van nieuwe add-on.

get_settings_form(user: User | None, **kwargs) BaseAddonForm | None

Formulier configuratie terugsturen voor deze add-on.

post_add(translation: Translation) None

Gebeurtenisafhandeling nadat een nieuwe vertaling is toegevoegd.

post_commit(component: weblate.trans.models.Component, store_hash: bool) None

Gebeurtenis afhandelen na wijzigingen worden doorgevoerd in de opslagruimte.

post_push(component: weblate.trans.models.Component) None

Gebeurtenisafhandeling nadat de opslagruimte naar upstream is gepusht.

post_update(component: weblate.trans.models.Component, previous_head: str, skip_push: bool) None

Gebeurtenisafhandeling nadat de opslagruimte is bijgewerkt vanuit upstream.

Parameters:
  • previous_head (str) – HEAD van de opslagruimte, voorafgaande aan bijwerken, mag leeg zijn bij initieel klonen.

  • skip_push (bool) – Of de bewerking van de add-on het pushen van wijzigingen naar upstream moet overslaan. Gewoonlijk kunt u dit doorgeven aan de onderliggende methoden als commit_and_push of commit_pending.

pre_commit(translation: Translation, author: str, store_hash: bool) None

Gebeurtenis afhandelen voor wijzigingen worden doorgevoerd in de opslagruimte.

pre_push(component: weblate.trans.models.Component) None

Gebeurtenisafhandeling voordat de opslagruimte naar upstream wordt gepusht.

pre_update(component: weblate.trans.models.Component) None

Gebeurtenisafhandeling voordat de opslagruimte wordt bijgewerkt vanuit upstream.

save_state() None

Informatie status add-on opslaan.

store_post_load(translation: Translation, store: TranslationFormat) None

Gebeurtenisafhandeling nadat een bestand is geparset.

Het ontvangt een instantie van een klasse voor een bestandsindeling als een argument.

Dit is nuttig om de parameters voor de klasse van de bestandsindeling aan te passen, bijvoorbeeld om aan te passen hoe het bestand moet worden opgeslagen.

unit_pre_create(unit: Unit) None

Gebeurtenisafhandeling voordat nieuwe eenheid wordt gemaakt.

user() User

Gebruiker van Weblate hield met deze add-on wijzigingen bij.

class weblate.addons.models.Addon

ORM-object voor een add-on.

class weblate.trans.models.Component

ORM-object voor een onderdeel.

class weblate.trans.models.Translation

ORM-object voor een vertaling.

class weblate.trans.models.Project

ORM-object voor een project.

class weblate.trans.models.Unit

ORM-object voor een eenheid.

class weblate.trans.models.User

ORM-object voor een gebruiker.

class weblate.trans.models.TranslationFormat

Wrapper vertaalbestand.

class weblate.trans.models.BaseAddonForm

Basisformulier voor het configureren van add-ons.

Hier is een voorbeeld add-on:

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

from django.utils.translation import gettext_lazy

from weblate.addons.base import BaseAddon
from weblate.addons.events import AddonEvent


class ExampleAddon(BaseAddon):
    # Filter for compatible components, every key is
    # matched against property of component
    compat = {"file_format": {"po", "po-mono"}}
    # List of events add-on should receive
    events: set[AddonEvent] = {
        AddonEvent.EVENT_PRE_COMMIT,
    }
    # Add-on unique identifier
    name = "weblate.example.example"
    # Verbose name shown in the user interface
    verbose = gettext_lazy("Example add-on")
    # Detailed add-on description
    description = gettext_lazy("This add-on does nothing it is just an example.")

    # Callback to implement custom behavior
    def pre_commit(self, translation, author: str, store_hash: bool) -> None:
        return