Разработка надстроек

Надстройки — это способ внести изменений в ваш рабочий процесс локализации с помощью Weblate.

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

Базовый класс для всех надстроек Weblate.

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

Проверяет, совместима ли надстройка с указанным компонентом.

change_event(change: Change) None

Event handler for change event.

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

Назва кампаниента

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

Сохранение конфигурации.

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

Возвращает форму с пользовательскими настройками. Вызывается при добавлении новой надстройки к компоненту.

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

Возвращает форму с пользовательскими настройками этой надстройки.

post_add(translation: Translation) None

Абнаŭлиаже файл ЛИНГУАС, кали дадажекка нови пиераклад.

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

Укласкі ŭсие змиени ŭ лакаĺни репазіторий

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

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

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

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

Параметры:
  • previous_head (str) – Текущее состояние репозитория (HEAD) перед обновлением; может быть пустым, если этот репозиторий только что склонирован.

  • skip_push (bool) – Определяет, должна ли надстройка пропустить собственно отправку изменений в вышестоящий репозиторий. Обычно этот параметр просто передаётся в конкретные методы реализации, как commit_and_push или commit_pending.

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

Укласкі ŭсие змиени ŭ лакаĺни репазіторий

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

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

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

Кі треба адсилаć репазіторий при коžним запісие ревізіі.

save_state() None

Сохранить информацию о состоянии надстройки.

store_post_load(translation: Translation, store: TranslationFormat) None

Абнаŭлиаже файл ЛИНГУАС, кали дадажекка нови пиераклад.

В качестве аргумента ему передаётся объект класса формата файла.

Это может быть полезно для модификации параметров класса формата файла, например, изменить , как именно данный файл будет сохраняться.

unit_pre_create(unit: Unit) None

Event handler before new unit is created.

user() User

С помощью этого дополнения пользователь Weblate следит за изменениями.

class weblate.addons.models.Addon

ORM-объект для дополнения.

class weblate.trans.models.Component

Пражект / Кампаниент

class weblate.trans.models.Translation

Дадаć жак інšи пиераклад

class weblate.trans.models.Project

Спіс правиерак

class weblate.trans.models.Unit

ORM object for an unit.

class weblate.trans.models.Change

ORM object for an change.

class weblate.trans.models.User

ORM object for an user.

class weblate.trans.models.TranslationFormat

Обёртка файла перевода.

class weblate.trans.models.BaseAddonForm

У репазитори жосć ниезамакаванижа змиени!

Вот пример надстройки:

# 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