Внутреннее устройство Weblate

Примечание

Эта глава даст вам базовое представление о внутреннем устройстве Weblate.

Большую часть структуры своего кода Weblate наследует от Django, так как основывается на оном.

Структура каталогов

Быстрый обзор структуры каталогов главного репозитория Weblate:

docs

Исходный код данной документации, который можно собрать с помощью Sphinx.

dev-docker

Код Docker для запуска сервера разработки, смотреть раздел Запуск Weblate локально внутри Doсker.

weblate

Исходный код Weblate (точнее самого Django-приложения), смотреть раздел Внутреннее устройство Weblate.

weblate/static

Клиентские файлы (CSS, Javascript, изображения), смотреть Фронтэнд Weblate.

Модули

Weblate состоит из нескольких Django-приложений (некоторые из них необязательны, смотреть раздел Дополнительные модули Weblate):

accounts

Учётные записи пользователей, профили и уведомления.

addons

Надстройки для изменения поведения Weblate, смотреть раздел Дополнения.

api

API на основе Django REST framework.

auth

Авторизация и разрешения.

billing

Дополнительный модуль Выставление счетов.

checks

Модуль Проверки качества строки перевода.

fonts

Модуль проверки отрисовки шрифтов.

formats

Слой абстракции от форматов файлов на основе translate-toolkit.

gitexport

Дополнительный модуль Экспортер Git.

lang

Модуль определения языка и моделей множественного числа.

legal

Дополнительный модуль Юридический модуль.

machinery

Интеграция сервисов машинного перевода.

memory

Встроенная память переводов, смотрите раздел Память переводов.

screenshots

Модуль управления снимками экрана и распознаванием текста.

trans

Основной модуль обработки переводов.

utils

Различные вспомогательные утилиты.

vcs

Абстракция системы контроля версий.

wladmin

Настройка интерфейса администра Django.

Внутреннее устройство фоновых задач

Подсказка

В этом разделе описываются внутренности задач Celery. Фоновые задачи с использованием Celery описывает, как настроить Celery для выполнения задач.

Weblate использует Celery для выполнения задач в фоновом режиме. Некоторые задачи запускаются по событиям, а некоторые — по расписанию.

Celery Beat используется для планирования задач, а django-celery-beat используется для хранения расписания периодических задач в базе данных. Расписание задач настраивается в tasks.py в каждом из приложений Django.

Задачи обрабатываются с использованием нескольких очередей; маршрутизация настраивается в settings.py. Очереди были спроектированы для разделения различных типов рабочей нагрузки:

celery

Очередь по умолчанию, в которой обрабатываются фоновые задачи.

notify

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

memory

Обновляет записи памяти переводов. Очередь обновления может быть длинной при импорте новых строк, и длительная обработка здесь не имеет большого значения, поэтому использование отдельной очереди позволяет избежать блокировки других задач.

backup

Задачи резервного копирования не могут выполняться параллельно, и один выделенный обработчик упрощает это.

translate

Известно, что задачи автоматического перевода выполняются долго, поскольку они обращаются к внешним службам.