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, user: User | None) bool

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

change_event(change: Change) None

Manipulador de eventos para evento de alteração.

component_update(component: weblate.trans.models.Component) 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) 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) None

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

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

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

post_push(component: weblate.trans.models.Component) 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) 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) None

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

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

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

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

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

save_state() None

Salva informações de status do complemento.

store_post_load(translation: Translation, store: TranslationFormat) None

Manipulador de eventos após um arquivo ser analisado.

Ele recebe uma instância de uma classe de formato de arquivo como um argumento.

Isso é útil para modificar os parâmetros de classe de formato de arquivo, por exemplo, ajustar como o arquivo será salvo.

unit_pre_create(unit: Unit) 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 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