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) None

Event handler for change event.

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

Event handler for component update.

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

Salva a configuração.

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

Event handler daily.

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

Event handler after new translation is added.

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

Event handler after changes are committed to the repository.

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

Event handler after repository is pushed upstream.

post_update(component: weblate.trans.models.Component, previous_head: str, skip_push: bool) None

Event handler after repository is updated from 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

Event handler before changes are committed to the repository.

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

Event handler before repository is pushed upstream.

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

Event handler before repository is updated from upstream.

save_state() None

Salva informações do estado da extensão.

store_post_load(translation: Translation, store: TranslationFormat) None

Event handler after a file is parsed.

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

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

unit_pre_create(unit: Unit) None

Event handler before new unit is created.

user() User

Utilizador do Weblate utilizado para rastrear alterações por este complemento.

class weblate.addons.models.Addon

ORM object for an add-on.

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

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

Translation file wrapper.

class weblate.trans.models.BaseAddonForm

Base form for configuring add-ons.

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