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

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

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

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

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

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

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

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

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

store_post_load(translation: Translation, store: TranslationFormat) None

Gestionnaire d’événements après l’analyse d’un fichier.

Il reçoit comme argument une instance de la classe d’un format de fichier.

C’est utile pour modifier les paramètres de classe du format de fichier, par exemple pour déclarer la manière dont le fichier sera sauvegardé.

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