Desenvolvendo 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.

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 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) 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 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) 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 do estado da extensão.

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

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.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 extensões.

Aqui está um exemplo de extensão:

# 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