Développement de greffons

Extensions permettent de personnaliser le flux des travaux de traduction dans Weblate.

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

Classe de base pour les greffons Weblate.

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

Vérifier si le greffon est compatible avec le composant donné.

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

Event handler for change event.

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

Gestionnaire d’événements pour la mise à jour de composants.

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

Enregistrer la configuration.

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

Gestionnaire d’événements quotidien.

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

Renvoie le formulaire de configuration pour ce nouveau greffon.

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

Renvoie le formulaire de configuration pour ce greffon.

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

Gestionnaire d’événements après l’ajout d’une nouvelle traduction.

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

Gestionnaire d’événements après que des modifications aient été validées dans le dépôt.

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

Event handler after add-on is installed.

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

Gestionnaire d’événements après que le dépôt a été poussé sur l’amont.

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

Gestionnaire d’événements après que le dépôt a été mis à jour à partir de l’amont.

Paramètres:
  • previous_head (str) – HEAD du dépôt avant la mise à jour, peut être vide au moment du clônage initial.

  • skip_push (bool) – Indique si l’opération du greffon doit ignorer la poussée des modifications vers l’amont. Habituellement vous pouvez passer cette information aux méthodes sous-jascentes comme commit_and_push ou commit_pending.

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

Gestionnaire d’événements avant que des modifications ne soient validées dans le dépôt.

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

Gestionnaire d’événements avant que le dépôt ne soit poussé sur l’amont.

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

Gestionnaire d’événements avant que le dépôt ne soit mis à jour à partir de l’amont.

save_state() None

Enregistrer les informations d’état du greffon.

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

Gestionnaire d’événements avant que la nouvelle unité soit créée.

user() User

Utilisateur Weblate utilisé pour le suivi des modifications par ce greffon.

class weblate.addons.models.Addon

Objet ORM pour un greffon.

class weblate.trans.models.Component

Objet ORM pour un composant.

class weblate.trans.models.Translation

Objet ORM pour une traduction.

class weblate.trans.models.Project

Objet ORM pour un projet.

class weblate.trans.models.Unit

Objet ORM pour une unité.

class weblate.trans.models.Change

ORM object for an change.

class weblate.trans.models.User

Objet ORM pour un utilisateur.

class weblate.trans.models.TranslationFormat

Conteneur d’un fichier de traduction.

class weblate.trans.models.BaseAddonForm

Base form for configuring add-ons.

Voici un exemple de greffon :

# 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