Нутрощі Weblate¶
Примітка
У цьому розділі наведено базовий огляд нутрощів Weblate.
Структура більшої частини коду Weblate походить від Django і засновано на структурі коду Django.
Структура каталогів¶
Короткий огляд структури каталогів основного сховища Weblate:
docsПочатковий код цієї документації, який можна зібрати за допомогою Sphinx.
dev-dockerКод Docker для запуску сервера розробки, див. Запуск Weblate локально у Docker.
weblateВихідний код Weblate як програми Django, див. Нутрощі Weblate.
weblate/staticКлієнтські файли (CSS, Javascript і зображення), див. Оболонка Weblate.
Модулі¶
Weblate складається з декількох програм Django (деякі є необов’язковими, див. Додаткові модулі Weblate):
accounts
Обліковий запис користувача, профілі та сповіщення.
addons
Додатки для коригування поведінки Weblate, див. Додатки.
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Відомо, що завдання автоматичного перекладу тривають довго, оскільки вони залучають зовнішні сервіси.