Внутреннее устройство 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Известно, что задачи автоматического перевода выполняются долго, поскольку они обращаются к внешним службам.