Обновление Weblate

Обновления образа Docker’а

Официальный образ Docker Weblate (см. Установка с помощью Docker’а) включает все шаги обновления. Обычно не требуется ручного вмешательства, кроме получения последней (или, по крайней мере, более новой) версии.

Общие инструкции по обновлению

Всегда проверяйте новые изменения в Требования к программному обеспечению перед обновлением. После того, как все зависимости установлены или обновлены, убедитесь, что ваш settings.py соответствует изменениям в конфигурации (обратитесь к settings_example.py для правильных значений).

Всегда проверяйте Инструкции для конкретных версий перед обновлением. Если вы пропускаете какие-либо версии, обязательно следуйте инструкциям для всех версий, которые вы пропускаете при таком обновлении. Иногда лучше обновляться постепенно до промежуточной версии, чтобы обеспечить плавную миграцию. Обновление через несколько выпусков должно работать, но оно не так хорошо протестировано, как обновления на одну версию!

Примечание

Всегда создавайте резервную копию всей базы данных перед обновлением, чтобы иметь возможность откатить базу данных в случае сбоя обновления, см. Резервное копирование и перенос Weblate.

  1. Дождитесь, пока очереди Celery станут пустыми, затем остановите процессы WSGI и Celery, чтобы во время обновления не работали старые процессы. В противном случае могут произойти несовместимые изменения в базе данных.

    Очередь задач Celery не является стабильным интерфейсом между версиями, поэтому задачи, поставленные в очередь из старой версии, не гарантированно будут работать после обновления. Вы можете отслеживать длину очереди в Интерфейс управления или с помощью celery_queues.

  2. Обновление Weblate

    При установке через pip это можно сделать следующим образом:

    uv pip install -U "weblate[all]==version"
    

    Или, если вы просто хотите получить последнюю выпущенную версию:

    uv pip install -U "weblate[all]"
    

    Если вы не хотите устанавливать все необязательные зависимости, сделайте это:

    uv pip install -U weblate
    

    При использовании Git checkout вам необходимо получить новый исходный код и обновить вашу установку:

    cd weblate-src
    git pull
    # Update Weblate inside your Python environment
    . ~/weblate-env/bin/uv pip install -e '.[all]'
    # Install dependencies directly when not using Python environment
    uv pip install --upgrade -e .
    # Install optional dependencies directly when not using a Python environment
    uv pip install --upgrade -e '.[all]'
    
  3. Новые выпуски Weblate могут иметь новые Зависимости Python, проверьте, покрывают ли они нужные вам функции.

  4. Обновите файл конфигурации, следуя settings_example.py или Инструкции для конкретных версий.

  5. Обновите базу данных:

    weblate migrate --noinput
    
  6. Соберите обновленные статические файлы (смотрите разделы Запуск сервера и Обслуживание статических файлов):

    weblate collectstatic --noinput --clear
    
  7. Сожмите файлы JavaScript и CSS (необязательно, смотрите раздел Сжатие клиентских ресурсов):

    weblate compress
    
  8. Если вы используете установку из Git, вам также следует регенерировать файлы локалей при каждом обновлении. Вы можете сделать это, выполнив:

    weblate compilemessages
    
  9. Убедитесь, что ваша установка в порядке (также смотрите раздел Рабочая среда):

    weblate check --deploy
    
  10. Перезапустите обработчик Celery (см. Фоновые задачи с использованием Celery).

Инструкции для конкретных версий

Изменено в версии 5.0: Инструкции для конкретной версии теперь включены в примечания к выпуску, см. Weblate 2026.5.

Обновление со старой неподдерживаемой версии

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

  • Если вы переходите с версии 2.x, всегда сначала переходите на версию 3.0.1.

  • Если вы переходите с версии 3.x, всегда сначала переходите на версию 4.0.4.

  • Если вы переходите с версии 4.x, всегда сначала переходите на версию 5.0.2.

  • Если вы обновляетесь с версии 5.0.x-5.9.x, всегда сначала обновляйтесь до 5.10.4.

  • Обновления с версий 5.10.x и новее в настоящее время поддерживаются напрямую.

Переход с других баз данных на PostgreSQL

Предупреждение

MySQL и MariaDB больше не поддерживаются в Weblate. Вы должны выполнить миграцию на PostgreSQL перед обновлением.

Если вы используете Weblate с MySQL или MariaDB, рассмотрите возможность миграции на PostgreSQL для повышения производительности, выполнив следующие шаги. Не забудьте предварительно остановить веб-сервер и сервер Celery, иначе вы можете получить несогласованные данные.

Создание базы данных в PostgreSQL

Обычно рекомендуется запускать Weblate в отдельной базе данных и под отдельной учётной записью:

# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"

# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate

# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -E UTF8 -O weblate weblate

Переход на PostgreSQL с помощью pgloader

pgloader — это универсальный инструмент миграции для переноса данных в PostgreSQL. Вы можете использовать его для миграции вашей базы данных Weblate.

  1. Настройте ваш settings.py для использования PostgreSQL в качестве базы данных.

  2. Перенесите схему в базу данных PostgreSQL:

    weblate migrate
    weblate sqlflush | weblate dbshell
    

3. Run the pgloader to transfer the data. The following script can be used to migrate the database, but you might want to learn more about pgloader to better understand what it does, and tweak it to match your setup:

LOAD DATABASE
     FROM mysql://weblate:password@localhost/weblate
     INTO postgresql://weblate:password@localhost/weblate

WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only

ALTER SCHEMA 'weblate' RENAME TO 'public'
;

Переход с Pootle

Поскольку Weblate изначально был написан как замена Pootle, поддерживается миграция учётных записей пользователей из него. Вы можете выгрузить пользователей из Pootle и импортировать их с помощью importusers.