Настройка Weblate¶
Расширяйте и настраивайте Weblate, используя Django и Python. Вносите свои изменения в основной репозиторий Weblate’а, чтобы выгоду из них мог извлечь каждый. Кроме того, это снизит ваши затраты на поддержку этих изменений: в дальнейшем при изменении внутренних интерфейсов или рефакторинге поддержкой актуальности кода, включённого в Weblate, будут заниматься его кураторы.
Подсказка
Вы также можете настроить внешний вид Weblate в Настройка внешнего вида.
Предупреждение
Ни внутренние интерфейсы, ни шаблоны не считаются стабильным API. Пожалуйста, просматривайте свои настройки при каждом обновлении, интерфейсы или их семантика могут измениться без предварительного уведомления.
См. также
Создание модуля Python¶
Если вы не знакомы с Python, возможно, вы захотите посмотреть статью Python для начинающих, в которой объясняются основы и указаны дальнейшие учебные пособия.
При написании собственного кода на Python (называемого модулем), его необходимо разместить в каталоге, находящемся либо в системном пути (обычно это путь вида /usr/lib/python3.12/site-packages/), либо в каталоге Weblate, который также добавляется к путям поиска интерпретатора.
Подсказка
При использовании Docker вы можете размещать модули Python в /app/data/python/ (см. Тома контейнеров Docker’а), чтобы они могли быть загружены Weblate, например, из файла переопределения настроек.
А ещё лучше превратить ваши модификации в полноценный пакет Python:
Создайте каталог для вашего пакета (мы будем использовать weblate_customization).
Внутри него создайте файл
pyproject.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 = []
Создайте папку для модуля Python:
src/weblate_customizationВ нём создайте файл
__init__.py, чтобы Python смог импортировать этот модуль.Этот пакет теперь можно установить с помощью uv pip install -e. Более подробная информация приведена в документации по редактируемым пакетам.
После установки этот модуль можно использовать в настройках Weblate (например,
weblate_customization.checks.FooCheck).
Структура вашего пакета должна выглядеть следующим образом:
weblate_customization
├── pyproject.toml
└── src
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
Пример настройки Weblate можно найти по адресу <https://github.com/WeblateOrg/customize-example>, он охватывает все описанные ниже темы.
Изменение логотипа¶
Создайте простое приложение Django, содержащее статические файлы, которые вы хотите перезаписать (смотрите раздел Создание модуля Python).
Стилизуемые элементы расположены в следующих файлах:
icons/weblate.svgЛоготип, отображаемый на панели навигации.
logo-*.pngВеб-иконки для разных разрешений экрана и веб-браузеров.
favicon.icoВеб-иконка, используемая устаревшими браузерами.
weblate-*.pngАватары ботов и анонимных пользователей. Некоторые веб-браузеры используют их также в качестве картинок для ярлыков на стартовой странице.
email-logo.pngИспользуется в уведомлениях по электронной почте.
Добавьте его в
INSTALLED_APPS:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
Запустите
weblate collectstatic --noinput, чтобы собрать статические файлы, предназначенные для передачи клиентам.
Пользовательские проверки качества, дополнения, автоматические предложения и автоисправления¶
Чтобы установить ваш код для Пользовательские автоматические исправления, Написание собственных проверок, Пользовательский машинный перевод или Написание дополнения в Weblate:
Поместите файлы в ваш модуль Python, содержащий настройки Weblate (см. Создание модуля Python или Настройка кода).
Добавьте его полный путь к классу 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",)