# Налаштовування Weblate

Розширюйте можливості та налаштовуйте систему за допомогою Django і Python. Надсилайте ваші зміни до основної гілки розробки, щоб ними могли скористатися усі. Це зменшує витрати на супровід системи; код у Weblate важливий при зміні внутрішніх інтерфейсів або переплануванні коду.

#### HINT
Ви можете налаштувати вигляд Weblate за допомогою розділу [Налаштовування вигляду](https://docs.weblate.org/uk/latest/admin/admin.md#manage-appearance).

#### WARNING
Ні внутрішні інтерфейси, ні шаблони не вважаються стабільним програмним інтерфейсом. Будь ласка, переглядайте ваші налаштовування при кожному оновленні — інтерфейси або їхня семантика можуть змінитися без попередження.

#### SEE ALSO
[Участь у розробці Weblate](https://docs.weblate.org/uk/latest/contributing/index.md#contributing)

<a id="custom-module"></a>

## Створення модуля Python

Якщо ви не є професіоналом у Python, вам варто ознайомитися із книгою [Python For Beginners](https://www.python.org/about/gettingstarted/), де наведено пояснення щодо основ мови та посилання на інші підручники.

Щоб написати файл з користувацьким кодом на Python (так званий модуль), потрібне місце для його зберігання, або в системному шляху (зазвичай щось на кшталт `/usr/lib/python3.12/site-packages/`), або в каталозі Weblate, який також додається до шляху пошуку інтерпретатора.

#### HINT
Коли [using Docker](https://docs.weblate.org/uk/latest/admin/install/docker.md#docker-deploy), ви можете розміщувати модулі Python у `/app/data/python/` (бачити [Томи контейнера Docker](https://docs.weblate.org/uk/latest/admin/install/docker.md#docker-volume)), щоб їх можна було завантажити за допомогою Weblate, наприклад, з [settings override file](https://docs.weblate.org/uk/latest/admin/install/docker.md#docker-settings-override).

Ще краще — перетворіть ваші налаштування на належний пакунок Python:

1. Створіть теку для вашого пакунка (ми використовуватимемо weblate_customization).
2. Усередині нього створіть файл `pyproject.toml` для опису пакета:
   ```toml
   [build-system]
   requires = ["uv_build>=0.8.18,<0.9.0"]
   build-backend = "uv_build"

   [project]
   name = "weblate-customization"
   version = "0.1.0"
   description = "Add your description here"
   requires-python = ">=3.13"
   dependencies = []
   ```
3. Створіть папку для модуля Python: `src/weblate_customization`
4. У ній створіть файл `__init__.py`, щоб переконатися, що Python може імпортувати модуль.
5. Цей пакет тепер можна встановити за допомогою **uv pip install -e**. Більше інформації можна знайти в [Документації щодо редагуваних пакетів](https://docs.astral.sh/uv/pip/packages/#editable-packages).
6. Після встановлення модулем можна скористатися у налаштуваннях Weblate (наприклад `weblate_customization.checks.FooCheck`).

Ваша структура пакунка має виглядати десь так:

```text
weblate_customization
├── pyproject.toml
└── src
    └── weblate_customization
        ├── __init__.py
        ├── addons.py
        └── checks.py
```

Приклад налаштовування Weblate можна знайти тут: <[https://github.com/WeblateOrg/customize-example](https://github.com/WeblateOrg/customize-example)>. У цьому прикладі реалізовано усі речі, які описано нижче.

## Зміна логотипа

1. Створіть просту програму Django, яка міститиме статичні файли, які ви хочете перезаписати (див. [Створення модуля Python](#custom-module)).

   Логотип буде використано у таких файлах:

   `icons/weblate.svg`
   : Логотип, який буде показано на смужці навігації.

   `logo-*.png`
   : Вебпіктограми залежатимуть від роздільності екрана та браузера.

   `favicon.ico`
   : Вебпіктограма для використання у застарілих браузерах.

   `weblate-*.png`
   : Аватари для ботів або анонімних користувачів. У деяких браузерах ці піктограми буде використано як мініатюри.

   `email-logo.png`
   : Використовується у повідомленнях електронної пошти зі сповіщеннями.
2. Додайте її до [`INSTALLED_APPS`](https://docs.djangoproject.com/en/stable/ref/settings/#std-setting-INSTALLED_APPS):
   ```python
   INSTALLED_APPS = (
       # Add your customization as first
       "weblate_customization",
       # Weblate apps are here…
   )
   ```
3. Віддайте команду `weblate collectstatic --noinput`, щоб зібрати статичні файли, які надаються клієнтам.

#### SEE ALSO
* [How to manage static files (e.g. images, JavaScript, CSS)](https://docs.djangoproject.com/en/stable/howto/static-files/)
* [Обслуговування статичних файлів](https://docs.weblate.org/uk/latest/admin/install.md#static-files)

<a id="custom-addon-modules"></a>

<a id="custom-check-modules"></a>

<a id="custom-modules"></a>

## Спеціальні перевірки якості, доповнення, автоматичні пропозиції та автоматичні виправлення

Щоб встановити ваш код для [Нетипові автоматичні виправлення](https://docs.weblate.org/uk/latest/admin/checks.md#custom-autofix), [Написання власних перевірок](https://docs.weblate.org/uk/latest/admin/checks.md#own-checks), [Нетиповий комп’ютерний переклад](https://docs.weblate.org/uk/latest/admin/machine.md#custom-machinery) або [Написання додатка](https://docs.weblate.org/uk/latest/admin/addons.md#own-addon) у Weblate:

1. Помістіть файли у ваш модуль Python, що містить налаштування Weblate (див. [Створення модуля Python](#custom-module) або [Налаштування коду](https://docs.weblate.org/uk/latest/admin/install/docker.md#docker-python-override)).
2. Додайте повний шлях до класу Python у відповідних налаштуваннях:
   * [`WEBLATE_ADDONS`](https://docs.weblate.org/uk/latest/admin/config.md#std-setting-WEBLATE_ADDONS)
   * [`CHECK_LIST`](https://docs.weblate.org/uk/latest/admin/config.md#std-setting-CHECK_LIST)
   * [`WEBLATE_MACHINERY`](https://docs.weblate.org/uk/latest/admin/config.md#std-setting-WEBLATE_MACHINERY)
   * [`AUTOFIX_LIST`](https://docs.weblate.org/uk/latest/admin/config.md#std-setting-AUTOFIX_LIST)

```python
# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)

# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)

# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)

# Automatic suggestions
WEBLATE_MACHINERY += ("weblate_customization.machinery.SampleTranslation",)
```

#### SEE ALSO
* [Нетипові автоматичні виправлення](https://docs.weblate.org/uk/latest/admin/checks.md#custom-autofix)
* [Написання власних перевірок](https://docs.weblate.org/uk/latest/admin/checks.md#own-checks)
* [Написання додатка](https://docs.weblate.org/uk/latest/admin/addons.md#own-addon)
* [Виконання скриптів з додатка](https://docs.weblate.org/uk/latest/admin/addons.md#addon-script)
