Developing add-ons

Complementos are way to customize localization workflow in Weblate.

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

Base class for Weblate add-ons.

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

Check whether add-on is compatible with given component.

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

Controlador de suceso para cambiar suceso.

check_change_action(change: Change) bool

Early filtering of Change actions before triggering change_event callback.

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

Controlador de suceso para actualizar componente.

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

Guardar configuración.

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

Event handler daily.

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

Return configuration form for adding new add-on.

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

Return configuration form for this add-on.

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

Event handler after new translation is added.

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

Suceso de manipulador tras cambios son consignados para el repositorio.

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

Event handler after add-on is installed.

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

Event handler after repository is pushed upstream.

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

Controlador de suceso tras repositorio se actualiza desde el origen.

Parámetros:
  • previous_head (str) – «HEAD» del repositorio antes de la actualización; puede estar vacía durante la clonación inicial.

  • skip_push (bool) – Si la operación de complementos omitirían el envío de cambios en desarrollo. Normalmente se puede pasar a los métodos subyacentes como commit_and_push o commit_pending.

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

Suceso manipulador antes de cambios son consignados para el repositorio.

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

Event handler before repository is pushed upstream.

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

Event handler before repository is updated from upstream.

save_state() None

Guarde la información del estado del complemento.

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

Event handler before new unit is created.

user() User

Weblate user used to track changes by this add-on.

class weblate.addons.models.Addon

Objeto ORM para un complemento.

class weblate.trans.models.Component

ORM object for a component.

class weblate.trans.models.Translation

ORM object for a translation.

class weblate.trans.models.Project

ORM object for a project.

class weblate.trans.models.Unit

ORM object for an unit.

class weblate.trans.models.Change

Objeto ORM para un cambio.

class weblate.trans.models.User

ORM object for an user.

class weblate.trans.models.TranslationFormat

Traducción de cobertura de archivo.

class weblate.trans.models.BaseAddonForm

Base form for configuring add-ons.

Here is an example add-on:

# 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