Desenvolver extensões

Extensões são uma forma de personalizar o fluxo de trabalho de localização no Weblate.

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

Classe base para as extensões do Weblate.

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

Verifica se a extensão é 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.

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 uma nova extensão.

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

Retorna um formulário de configuração para esta extensão.

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 o 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 de extensão deve ignorar o push de alterações para o upstream. Normalmente você pode passar isso para 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 o 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 o 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 do estado da extensão.

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

Utilizador 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 utilizador.

class weblate.trans.models.TranslationFormat

Invólucro do ficheiro de tradução.

class weblate.trans.models.BaseAddonForm

Forma base para configuração de complementos.

Aqui está um exemplo de extensão:

# 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