Обновление Weblate¶
Обновления образа Docker’а¶
В официальный образ Docker’а (смотрите раздел Установка с помощью Docker’а) уже интегрированы все шаги для обновления. Вручную делать ничего не надо, за исключением извлечения последней версии.
Общие инструкции по обновлению¶
Перед обновлением, пожалуйста, проверьте текущие зависимости программного обеспечения, поскольку они могли измениться. После того, как все зависимости будут установлены или обновлены, пожалуйста, приведите свой файл настроек settings.py
в соответствие с изменениями в конфигурации (правильные значения смотрите в settings_example.py
).
Перед обновлением всегда проверяйте инструкции для конкретных версий. Если вы пропустили какие-то версии, пожалуйста, при обновлении проследуйте инструкциям для всех версий, которые вы пропустили. Иногда, чтобы обеспечить плавный переход, лучше сперва обновиться до какой-нибудь промежуточной версии. Обновление через несколько версий должно работать, но оно протестировано не так хорошо, как обновление на одну версию.
Примечание
Перед обновлением рекомендуется выполнить полное резервное копирование базы данных, чтобы её можно было откатить в случае неудачи обновления, смотрите раздел Резервное копирование и перенос Weblate.
Остановите процессы wsgi и Celery. Обновление может выполнять несовместимые изменения в базе данных, поэтому во время обновления всегда безопаснее избегать выполнения старых процессов.
Обновите код Weblate.
При установке через pip это можно сделать следующим образом:
pip install -U Weblate
При использовании кода из Git’а вам нужно будет извлечь новый исходный код и обновить вашу установку:
cd weblate-src git pull # Update Weblate inside your virtualenv . ~/weblate-env/bin/pip install -e . # Install dependencies directly when not using virtualenv pip install --upgrade -r requirements.txt
Обновите файл настроек, пример смотрите в
settings_example.py
или обратитесь к разделу Инструкции для конкретных версий для получения информации о необходимых шагах.Обновите структуру базы данных:
weblate migrate --noinput
Соберите обновлённые статические файлы (смотрите разделы Запуск сервера и Обслуживание статических файлов):
weblate collectstatic --noinput
Сожмите файлы JavaScript и CSS (необязательно, смотрите раздел Сжатие клиентских ресурсов):
weblate compress
Если вы используете версию из Git’а, вам также при каждом обновлении следует заново сгенерировать файлы локалей. Вы можете сделать это, выполнив следующую команду:
weblate compilemessages
Убедитесь, что ваша установка в порядке (также смотрите раздел Рабочая среда):
weblate check --deploy
Перезапустите рабочий процесс celery (смотрите раздел Фоновые задачи с использованием Celery).
Инструкции для конкретных версий¶
Обновление с ветки 2.x¶
При обновлении с выпусков ветки 2.x всегда сначала выполняйте обновление до версии 3.0.1, а затем продолжайте обновление в ветке 3.x. Обновления, пропустившие этот этап, не поддерживаются и будут работать неправильно.
Обновление с ветки 3.x¶
При обновлении с выпусков ветки 3.x всегда сначала выполняйте обновление до версии 4.0.4 или 4.1.1, а затем продолжайте обновление в ветке 4.x. Обновления, пропустившие этот этап, не поддерживаются и будут работать неправильно.
Обновление с версии 4.0 до версии 4.1¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
В файл
settings_example.py
внесено несколько изменений, наиболее заметные из которых касаются промежуточного программного обеспечения, пожалуйста, соответствующим образом подправьте свой файл настроек.Появилась поддержка нескольких новых форматов файлов, возможно, вы захотите включить их обработку в случае, если вы изменяли значение параметра
WEBLATE_FORMATS
.Появились новые проверки качества, возможно, вы захотите включить их, если вы изменяли параметр
CHECK_LIST
.Параметр
DEFAULT_THROTTLE_CLASSES
был изменён, чтобы разрешать сообщать об ограничении частоты запросов к API.Появились новые зависимости и обновились старые.
Произошло изменение параметра
INSTALLED_APPS
.Машинный перевод DeepL теперь по умолчанию использует API версии 2, вам может понадобиться подправить параметр
MT_DEEPL_API_VERSION
на тот случай, если ваша текущая подписка DeepL не поддерживает эту версию.
См.также
Обновление с версии 4.1 до версии 4.2¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Обновление с выпусков ветки 3.x больше не поддерживается, пожалуйста, сначала обновитесь до версии 4.0 или 4.1.
Появились новые зависимости и обновились старые.
В файл
settings_example.py
внесено несколько изменений, наиболее заметные из которых касаются нового промежуточного программного обеспечения и изменения порядка приложений.Ключи для форматов на основе JSON больше не включают ведущую точку. Строки корректируются во время миграции базы данных, но может понадобиться откорректировать внешние компоненты, если вы полагались на значения ключей после экспорта или в API.
Настройки Celery были изменены: очередь
memory
более не используется. Пожалуйста, подправьте свои скрипты запуска и значение параметраCELERY_TASK_ROUTES
.Домен Weblate’а теперь настраивается через параметры, смотрите описание параметра
SITE_DOMAIN
(или переменной окруженияWEBLATE_SITE_DOMAIN
). Перед запуском Weblate их необходимо настроить.Имена пользователей и адреса электронной почты в базе данных теперь уникальны независимо от регистра. Ранее из-за ошибки и особенностей PostgreSQL имена и адреса с разным регистром символов считались одинаковыми.
См.также
Обновление с версии 4.2 до версии 4.3¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
В проверках качества произошли некоторые изменения, возможно, вы захотите включить их, если вы изменяли параметр
CHECK_LIST
.Атрибут «исходный язык» перемещён из проекта в компонент, что также затронуло API. Вам нужно будет обновить клиента Weblate, если вы используете оный.
Миграция базы данных на версию 4.3 также может занять значительное количество времени (в зависимость от количества строк, которые вы переводите). Стоит ожидать, что миграция будет занимать примерно один час на каждые 100 000 исходных строк.
Произошло изменение параметра
INSTALLED_APPS
.Появился новый параметр
SESSION_COOKIE_AGE_AUTHENTICATED
, который дополняетSESSION_COOKIE_AGE
.Если вы пользовались командами hub или lab для интеграции с GitHub или GitLab, то вам нужно будет настроить их заново, см.
GITHUB_CREDENTIALS
иGITLAB_CREDENTIALS
.
-
Изменено в версии 4.3.1:
The Celery configuration was changed to add
memory
queue. Please adjust your startup scripts andCELERY_TASK_ROUTES
setting.
-
Изменено в версии 4.3.2:
The
post_update
method of addons now takes extraskip_push
parameter.
См.также
Обновление с версии 4.3 до версии 4.4¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Произошло изменение параметра
INSTALLED_APPS
, к нему надо добавитьweblate.configuration
.Теперь требуется Django 3.1.
Если вы используете MySQL или MariaDB, то требуемая минимальная версия увеличилась, см. mysql.
-
Изменено в версии 4.4.1:
Одноязычный gettext now uses both
msgid
andmsgctxt
when present. This will change identification of translation strings in such files breaking links to Weblate extended data such as screenshots or review states. Please make sure you commit pending changes in such files prior upgrading and it is recommeded to force loading of affected component usingloadpo
.Increased minimal required version of translate-toolkit to address several file format issues.
См.также
Обновление с версии 4.4 до версии 4.5¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Если у вас есть большие глоссарии, миграция может занять значительное время.
Глоссарии теперь хранятся как обычные компоненты.
API глоссария удалён, для доступа к глоссариям используйте стандартный API перевода.
Параметр
INSTALLED_APPS
измененён: к нему надо добавитьweblate.metrics
.
-
Изменено в версии 4.5.1:
There is a new dependency on the pyahocorasick module.
См.также
Upgrade from 4.5 to 4.6¶
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Появилась поддержка нескольких новых форматов файлов, возможно, вы захотите включить их обработку в случае, если вы изменяли значение параметра
WEBLATE_FORMATS
.API for creating components now automatically uses Внутренние URL-адреса Weblate, see
POST /api/projects/(string:project)/components/
.There is a change in dependencies and
PASSWORD_HASHERS
to prefer Argon2 for passwords hashing.
См.также
Обновление с Python’а 2 на Python 3¶
Weblate больше не поддерживает Python старше версии 3.5. В случае, если вы всё ещё работаете на более старой версии, пожалуйста, сначала выполните миграцию на Python 3 на существующей версии и обновите её только после перехода. Смотрите раздел Обновление с Python’а 2 на Python 3 в документации к Weblate 3.11.1.
Переход с других баз данных на PostgreSQL¶
Если вы используете Weblate базой данных, отличной от PostgreSQL, вам следует перейти на PostgreSQL, поскольку в версии 4.0 это будет единственная поддерживаемая база данных. Следующие шаги помогут вам осуществить перенос данных между базами данных. Пожалуйста, не забудьте перед переездом остановить веб-сервер и сервер 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 -O weblate weblate
Переход с использованием JSON-дампов Django¶
Простейшим способом перехода является использование JSON-дампов Django. Они хорошо работают для небольших установок. На больших сайтах вы вместо него можете использовать утилиту pgloader, смотрите раздел Переход на PostgreSQL с помощью pgloader.
Добавьте PostgreSQL в файл
settings.py
в качестве дополнительного подключения к базе данных:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
# Additional database options
"OPTIONS": {
# In case of using an older MySQL server, which has MyISAM as a default storage
# 'init_command': 'SET storage_engine=INNODB',
# Uncomment for MySQL older than 5.7:
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
# If your server supports it, see the Unicode issues above
"charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
"connect_timeout": 28800,
},
},
"postgresql": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
},
}
Запустите миграции и удалите все данные, вставленные в таблицы:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
Сделайте дамп прежней базы данных и импортируйте его в PostgreSQL
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
Подправьте параметр
DATABASES
, задав в нём использование по умолчанию только базы данных PostgreSQL и удалив старое соединение.
Теперь Weblate должен быть готов к запуску из базы данных PostgreSQL.
Переход на PostgreSQL с помощью pgloader¶
pgloader — это универсальный инструмент миграции для переноса данных на PostgreSQL. Вы можете использовать его для переноса базы данных Weblate.
Подправьте свой файл
settings.py
, задав в нём использование базы данных PostgreSQL.Перенесите схему в базу данных PostgreSQL:
weblate migrate weblate sqlflush | weblate dbshell
Запустите pgloader для переноса данных. Для переноса базы данных можно использовать следующий скрипт, но вы, возможно, захотите побольше узнать о pgloader’е, чтобы понять, что он делает, и подстроить его для соответствия вашим настройкам:
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. Вы можете создать дамп пользователей Pootle, а затем импортировать его, используя команду Django importusers
.