Utveckla tillägg

Tillägg är ett sätt att anpassa lokaliseringsarbetsflödet i Weblate.

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

Basklass för Weblate-tillägg.

classmethod can_install(*, component: Component | None = None, project: Project | None = None) bool

Kontrollera om tillägget är kompatibelt med den angivna komponenten.

change_event(change: Change, activity_log_id: int | None = None) dict | None

Händelsehanterare för ändringshändelse.

check_change_action(change: Change) bool

Tidig filtrering av ändringsåtgärder innan change_event-återanropet utlöses.

component_update(component: weblate.trans.models.Component, activity_log_id: int | None = None) dict | None

Händelsehanterare för komponentuppdatering.

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

Spara konfigurationen.

daily(component: weblate.trans.models.Component, activity_log_id: int | None = None) dict | None

Händelsehanterare dagligen.

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

Returnera konfigurationsformulär för att lägga till nytt tillägg.

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

Returnera konfigurationsformuläret för detta tillägg.

post_add(translation: Translation, activity_log_id: int | None = None) dict | None

Händelsehanterare efter att ny översättning har lagts till.

post_commit(component: weblate.trans.models.Component, store_hash: bool, activity_log_id: int | None = None) dict | None

Händelsehanterare efter att ändringar har lagts in i arkivet.

post_install(component: weblate.trans.models.Component, store_hash: bool, activity_log_id: int | None = None) dict | None

Händelsehanterare efter att tillägget har installerats.

post_push(component: weblate.trans.models.Component, activity_log_id: int | None = None) dict | None

Händelsehanterare efter att arkivet har skickats uppströms.

post_update(component: weblate.trans.models.Component, previous_head: str, skip_push: bool, activity_log_id: int | None = None) dict | None

Händelsehanterare efter att arkivet har uppdaterats från uppströms.

Parametrar:
  • previous_head (str) – HEAD i arkivet före uppdateringen kan vara tom vid den första kloningen.

  • skip_push (bool) – Om tilläggsfunktionen ska hoppa över att skicka ändringar uppströms. Vanligtvis kan du skicka detta till underliggande metoder som commit_and_push eller commit_pending.

pre_commit(translation: Translation, author: str, store_hash: bool, activity_log_id: int | None = None) dict | None

Händelsehanterare innan ändringar överförs till arkivet.

pre_push(component: weblate.trans.models.Component, activity_log_id: int | None = None) dict | None

Händelsehanterare innan arkivet skickas uppströms.

pre_update(component: weblate.trans.models.Component, activity_log_id: int | None = None) dict | None

Händelsehanterare innan arkivet uppdateras från uppströms.

save_state() None

Spara tilläggsinformation.

unit_pre_create(unit: Unit, activity_log_id: int | None = None) dict | None

Händelsehanterare innan ny enhet skapas.

user() User

Weblate-användare som används för att spåra ändringar med detta tillägg.

class weblate.addons.models.Addon

ORM-objekt för ett tillägg.

class weblate.trans.models.Component

ORM-objekt för en komponent.

class weblate.trans.models.Translation

ORM-objekt för en översättning.

class weblate.trans.models.Project

ORM-objekt för ett projekt.

class weblate.trans.models.Unit

ORM-objekt för en enhet.

class weblate.trans.models.Change

ORM-objekt för en ändring.

class weblate.trans.models.User

ORM-objekt för en användare.

class weblate.trans.models.TranslationFormat

Översättningsfilomslag.

class weblate.trans.models.BaseAddonForm

Grundform för konfigurering av tillägg.

Här är ett exempel på ett tillägg:

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

from __future__ import annotations

from typing import TYPE_CHECKING, ClassVar

from django.utils.translation import gettext_lazy

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

if TYPE_CHECKING:
    from weblate.addons.base import CompatDict


class ExampleAddon(BaseAddon):
    # Filter for compatible components, every key is
    # matched against property of component
    compat: ClassVar[CompatDict] = {
        "file_format": {"po", "po-mono"},
    }
    # List of events add-on should receive
    events: ClassVar[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,
        activity_log_id: int | None = None,
    ) -> None:
        return