Розробка додатків

За допомогою можливості Додатки ви можете налаштувати процедуру локалізації у Weblate.

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

Базовий клас для додатків Weblate.

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

Перевірка, чи сумісний додаток із вказаним складником.

component_update(component: Component) None

Обробник подій щодо оновлення складника.

configure(configuration) None

Збереження налаштувань.

daily(component: Component) None

Обробка подій щодня.

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

Повернення форми налаштовування для додавання нового додатка.

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

Повернення форми налаштовування для цього додатка.

post_add(translation: Translation) None

Обробка подій після додавання нового перекладу.

post_commit(component: Component) None

Обробка подій після внесення змін до сховища.

post_push(component: Component) None

Обробка подій після запису до сховища основної гілки розробки.

post_update(component: Component, previous_head: str, skip_push: bool, child: bool) None

Обробка подій після оновлення сховища у основній гілці розробки.

Параметри:
  • previous_head (str) – HEAD сховища до оновлення, може бути порожнім для початкового клону.

  • skip_push (bool) – Визначає, чи слід пропускати при обробці додатком запис до основного сховища коду. Зазвичай, ви можете передати цей параметр підлеглим методам як commit_and_push або commit_pending.

pre_commit(translation: Translation, author: User) None

Обробка подій, перш ніж зміни буде внесено до сховища.

pre_push(component: Component) None

Обробка подій до запису до сховища основної гілки розробки.

pre_update(component: Component) None

Обробка подій до оновлення сховища у основній гілці розробки.

save_state() None

Збереження відомостей щодо стану додатка.

store_post_load(translation: Unit, store: TranslationFormat) None

Обробка подій після обробки файла.

Отримує як аргумент екземпляр класу форматування файлів.

Корисний для внесення змін до класу форматування файлів, наприклад, для коригування способу зберігання файла.

unit_pre_create(unit: Unit) None

Обробка подій до створення нового модуля.

user()

За допомогою цього додатка користувач Weblate стежить за змінами.

class weblate.addons.base.Addon

Об’єкт ORM для додатка.

class weblate.addons.base.Component

Об’єкт ORM для складника.

class weblate.addons.base.Translation

Об’єкт ORM для перекладу.

class weblate.addons.base.Project

Об’єкт ORM для проєкту.

class weblate.addons.base.Unit

Об’єкт ORM для модуля.

class weblate.addons.base.User

Об’єкт ORM для користувача.

class weblate.addons.base.TranslationFormat

Обгортка файла перекладу.

Ось приклад додатка:

# 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 = (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) -> None:
        return