Kiegészítők fejlesztése

A kiegészítők lehetőséget biztosítanak a lokalizációs munkafolyamat testreszabására a Weblate-ben.

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

A Weblate kiegészítők alaposztálya.

classmethod can_install(component: Component, user: User | None) bool

Ellenőrzi, hogy a kiegészítő kompatibilis-e a megadott összetevővel.

change_event(change: Change) None

Eseménykezelő a változás eseményhez.

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

Eseménykezelő az összetevő frissítéséhez.

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

Beállítás mentése.

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

Napi eseménykezelő.

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

Űrlap megjelenítése új kiegészítő hozzáadásához.

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

Űrlap megjelenítése ehhez a kiegészítőhöz.

post_add(translation: Translation) None

Eseménykezelő, amely új fordítás hozzáadása után fut le.

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

Eseménykezelő, amely a változások tárolóba történő véglegesítése után fut le.

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

Eseménykezelő, amely a forrástárolóba történő feltöltés után fut le.

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

Eseménykezelő, amely a tároló forrástárolóból történő frissítése után fut le.

Paraméterek:
  • previous_head (str) – A tároló HEAD-je a frissítés előtt; kezdeti klónozáskor üres lehet.

  • skip_push (bool) – Meghatározza, hogy a kiegészítő művelet kihagyja-e a változások forrástárolóba való feltöltését. Általában továbbadható az alatta lévő metódusoknak mint commit_and_push vagy commit_pending.

pre_commit(translation: Translation, author: str, store_hash: bool) None

Eseménykezelő, amely a változások tárolóba történő véglegesítése előtt fut le.

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

Eseménykezelő, amely a forrástárolóba történő feltöltés előtt fut le.

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

Eseménykezelő, amely a tároló forrástárolóból történő frissítése előtt fut le.

save_state() None

A kiegészítő állapotának mentése.

store_post_load(translation: Translation, store: TranslationFormat) None

Eseménykezelő, amely egy fájl feldolgozása után fut le.

Egy fájlformátum-osztály egy példányát kapja meg argumentumként.

Ez akkor hasznos, ha módosítani szeretné a fájlformátum-osztály paramétereit, például az elmentés módjának beállításához.

unit_pre_create(unit: Unit) None

Eseménykezelő, amely egy új egység létrehozása előtt fut le.

user() User

A Weblate-felhasználó, amelyet ez a kiegészítő a változások követésére használ.

class weblate.addons.models.Addon

ORM objektum egy kiegészítőhöz.

class weblate.trans.models.Component

ORM objektum egy összetevőhöz.

class weblate.trans.models.Translation

ORM objektum egy fordításhoz.

class weblate.trans.models.Project

ORM objektum egy projekthez.

class weblate.trans.models.Unit

ORM objektum egy egységhez.

class weblate.trans.models.Change

ORM-objektum egy változáshoz.

class weblate.trans.models.User

ORM objektum egy felhasználóhoz.

class weblate.trans.models.TranslationFormat

Fordítási fájl csomagolóosztály.

class weblate.trans.models.BaseAddonForm

Alap űrlap a kiegészítők beállításához.

Íme egy példa kiegészítő:

# 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