Desenvolvendo complementos

Complementos são uma forma de personalizar o fluxo de tradução no Weblate.

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

Classe base para complementos do Weblate.

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

Verifica se o complemento é compatível com o componente dado.

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

Manipulador de eventos para evento de alteração.

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

Manipulador de eventos para atualização de componentes.

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

Salva a configuração.

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

Manipulador de eventos diário.

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

Retorna um formulário de configuração para adicionar um novo complemento.

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

Retorna um formulário de configuração para esse complemento.

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

Manipulador de eventos após nova tradução ser adicionada.

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

Manipulador de eventos após alterações terem seu commit feito para o repositório.

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

Manipulador de eventos após repositório ter o push feito para o upstream.

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

Manipulador de eventos após o repositório ser atualizado a partir do upstream.

Parâmetros:
  • previous_head (str) – HEAD do repositório antes da atualização, pode estar vazio na clonagem inicial.

  • skip_push (bool) – Se a operação do complemento deve ignorar o push de alterações para o upstream. Normalmente, você pode passar isso para os métodos subjacentes como commit_and_push ou commit_pending.

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

Manipulador de eventos antes das alterações terem seu commit feito para o repositório.

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

Manipulador de eventos antes do repositório ter seu push feito para o upstream.

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

Manipulador de eventos antes do repositório ser atualizado a partir do upstream.

save_state() None

Salva informações de status do complemento.

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

Manipulador de eventos antes que a nova unidade seja criada.

user() User

Usuário do Weblate utilizado para rastrear alterações por este complemento.

class weblate.addons.models.Addon

Objeto ORM para um complemento.

class weblate.trans.models.Component

Objeto ORM para um componente.

class weblate.trans.models.Translation

Objeto ORM para uma tradução.

class weblate.trans.models.Project

Objeto ORM para um projeto.

class weblate.trans.models.Unit

Objeto ORM para uma unidade.

class weblate.trans.models.Change

ORM object for an change.

class weblate.trans.models.User

Objeto ORM para um usuário.

class weblate.trans.models.TranslationFormat

Invólucro do arquivo de tradução.

class weblate.trans.models.BaseAddonForm

Forma base para configuração de complementos.

Aqui está um exemplo de um complemento:

# 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