Обновление Weblate#
Обновления образа Docker’а#
В официальный образ Docker’а (смотрите раздел Установка с помощью Docker’а) уже интегрированы все шаги для обновления Weblate. Обычно вручную делать ничего не надо, за исключением извлечения последней версии.
См.также
Общие инструкции по обновлению#
Перед обновлением, пожалуйста, проверьте текущие зависимости программного обеспечения, поскольку они могли измениться. После того, как все зависимости будут установлены или обновлены, пожалуйста, приведите свой файл настроек settings.py
в соответствие с изменениями в конфигурации (правильные значения смотрите в settings_example.py
).
Перед обновлением всегда проверяйте инструкции для конкретных версий. Если вы пропустили какие-то версии, пожалуйста, при обновлении проследуйте инструкциям для всех версий, которые вы пропустили. Иногда, чтобы обеспечить плавный переход, лучше сперва обновиться до какой-нибудь промежуточной версии. Обновление через несколько версий должно работать, но оно протестировано не так хорошо, как обновление на одну версию.
Примечание
Перед обновлением рекомендуется выполнить полное резервное копирование базы данных, чтобы её можно было откатить в случае неудачи обновления, смотрите раздел Резервное копирование и перенос Weblate.
Остановите процессы wsgi и Celery. Обновление может выполнять несовместимые изменения в базе данных, поэтому во время обновления всегда безопаснее избегать выполнения старых процессов.
Обновите код Weblate.
При установке через pip это можно сделать следующим образом:
pip install -U "Weblate[all]==version"
Or, if you just want to get the latest released version:
pip install -U "Weblate[all]"
Если вы не хотите устанавливать все необязательные зависимости, сделайте это:
pip install -U Weblate
При использовании кода из Git’а вам нужно будет извлечь новый исходный код и обновить вашу установку:
cd weblate-src git pull # Update Weblate inside your virtualenv . ~/weblate-env/bin/pip install -e '.[all]' # Install dependencies directly when not using virtualenv pip install --upgrade -r requirements.txt # Install optional dependencies directly when not using virtualenv pip install --upgrade -r requirements-optional.txt
Новый выпуск Weblate может содержать новые Необязательные зависимости, пожалуйста, проверьте, покрывают ли они нужные вам функции.
Обновите файл настроек, пример смотрите в
settings_example.py
или обратитесь к разделу Инструкции для конкретных версий для получения информации о необходимых шагах.Обновите структуру базы данных:
weblate migrate --noinput
Соберите обновленные статические файлы (смотрите разделы Запуск сервера и Обслуживание статических файлов):
weblate collectstatic --noinput --clear
Сожмите файлы 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
.Параметр
MT_DEEPL_API_VERSION
был удалён в версии 4.7. Машинный перевод DeepL теперь использует вместо этого новыйMT_DEEPL_API_URL
. Возможно, вам потребуется настроитьMT_DEEPL_API_URL
в соответствии с вашей подпиской.
См.также
Обновление с версии 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:
Настройки Celery были изменены: добавлена очередь
memory
. Пожалуйста, подправьте свои скрипты запуска и значение параметраCELERY_TASK_ROUTES
.
Изменено в версии 4.3.2:
Метод надстроек
post_update
теперь принимает дополнительный параметрskip_push
.
См.также
Обновление с версии 4.3 до версии 4.4#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Произошло изменение параметра
INSTALLED_APPS
, к нему надо добавитьweblate.configuration
.Теперь требуется Django 3.1.
Если вы используете MySQL или MariaDB, то требуемая минимальная версия увеличилась, смотреть раздел MySQL и MariaDB.
Изменено в версии 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 recommended to force loading of affected component usingweblate loadpo
.Увеличена минимальная требуемая версия translate-toolkit, чтобы решить некоторые проблемы с форматами файлов.
См.также
Обновление с версии 4.4 до версии 4.5#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Если у вас есть большие глоссарии, миграция может занять значительное время.
Глоссарии теперь хранятся как обычные компоненты.
API глоссария удалён, для доступа к глоссариям используйте стандартный API перевода.
Параметр
INSTALLED_APPS
измененён: к нему надо добавитьweblate.metrics
.
Изменено в версии 4.5.1:
Появилась новая зависимость от модуля pyahocorasick.
См.также
Обновление с версии 4.5 до версии 4.6#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
Появилась поддержка нескольких новых форматов файлов, возможно, вы захотите включить их обработку в случае, если вы изменяли значение параметра
WEBLATE_FORMATS
.API для создания компонентов теперь автоматически использует Внутренние URL-адреса Weblate, смотрите описание
POST /api/projects/(string:project)/components/
.Изменены зависимости и
PASSWORD_HASHERS
для предпочтения Argon2 для хэширования паролей.
См.также
Обновление с версии 4.6 до версии 4.7#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Заметные изменения конфигурации или зависимостей:
В файл
settings_example.py
внесено несколько изменений (MIDDLEWARE
), наиболее заметные из которых касаются промежуточного программного обеспечения, пожалуйста, соответствующим образом подправьте свой файл настроек.Машинный перевод DeepL теперь имеет общий параметр
MT_DEEPL_API_URL
для более гибкой адаптации к различным моделям подписки. ПараметрMT_DEEPL_API_VERSION
больше не используется.Теперь требуется Django 3.2.
См.также
Обновление с версии 4.7 до версии 4.8#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
В этом выпуске не требуется никаких дополнительных действий по обновлению.
См.также
Обновление с версии 4.8 до версии 4.9#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Произошли изменение в хранении метрик, обновление может занять много времени на больших сайтах.
См.также
Обновление с версии 4.9 до версии 4.10#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Изменены группы по проектам, обновление может занять много времени на сайтах с тысячами проектов.
В Django 4.0 были внесены некоторые несовместимые изменения, смотрите раздел Backwards incompatible changes in 4.0. Weblate пока поддерживает Django 3.2, на случай, если что-то из этого окажется проблематичным. Наиболее заметные изменения, которые могут повлиять на Weblate:
Прекращена поддержка PostgreSQL 9.6, Django 4.0 поддерживает PostgreSQL 10 и выше.
Формат
CSRF_TRUSTED_ORIGINS
был изменён.
Контейнер Docker теперь использует Django 4.0, изменения смотреть выше.
См.также
Обновление с версии 4.10 на 4.11#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Weblate теперь требует Python 3.7 или новее.
The implementation of По-проектная настройка доступа has changed, removing the project prefix from the group names. This affects API users.
Weblate теперь использует модуль
charset-normalizer
вместоchardet
для определения кодировки символов.Changed in 4.11.1: There is a change in
REST_FRAMEWORK
setting (removal of one of the backends inDEFAULT_AUTHENTICATION_CLASSES
).
См.также
Обновление с версии 4.11 на 4.12#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Никаких особых действий не требуется.
См.также
Обновление с версии 4.12 на 4.13#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
The Определение языков are now automatically updated on upgrade, use
UPDATE_LANGUAGES
to disable that.Handling of context and location has been changed for Файлы ресурсов Windows, Файлы HTML, Формат IDML, and Текстовые файлы file formats. In most cases the context is now shown as location.
Службы машинного перевода теперь настраиваются с помощью пользовательского интерфейса, настройки из конфигурационного файла будут импортированы во время переноса базы данных.
См.также
Обновление с версии 4.13 на 4.14#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
The Java formatting checks now match GNU gettext flags. The flags set in Weblate will be automatically migrated, but third-party scripts will need to use
java-printf-format
instead ofjava-format
andjava-format
instead ofjava-messageformat
.The jellyfish dependency has been replaced by rapidfuzz.
Changed in 4.14.2: Deprecated insecure configuration of VCS service API keys via _TOKEN/_USERNAME configuration instead of _CREDENTIALS list. In Docker, please add matching _HOST directive. For example see
WEBLATE_GITHUB_HOST
andGITHUB_CREDENTIALS
.
См.также
Обновление с версии 4.14 на 4.15#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Weblate now requires
btree_gin
extension in PostgreSQL. The migration process will install it if it has sufficient privileges. See Создание базы данных в PostgreSQL for manual setup.The Docker image no longer enables debug mode by default. In case you want it, enable it in the environment using
WEBLATE_DEBUG
.The database migration make take hours on larger instances due to recreating some of the indexes.
Changed in 4.15.1: The default value for
DEFAULT_PAGINATION_CLASS
in rest framework settings was changed.
См.также
Upgrade from 4.15 to 4.16#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Celery beat is now storing the tasks schedule in the database,
CELERY_BEAT_SCHEDULER
andINSTALLED_APPS
need to be changed for that.The deprecated VCS setting for credentials is no longer supported, see Обновление с версии 4.13 на 4.14.
Upgrade of django-crispy-forms requires changes in
INSTALLED_APPS
.Integration of django-cors-headers requires changes in
INSTALLED_APPS
andMIDDLEWARE
.
См.также
Upgrade from 4.16 to 4.17#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Migration to rewritten metrics storage might take considerable time on larger Weblate instance (expect around 15 minutes per GB of
metrics_metric
table). To reduce downtime, you can copyweblate/metrics/migrations/*.py
from Weblate 4.17 to 4.16 and start the migration in the background. Once it is completed, perform full upgrade as ususal.Docker container now requires PostgreSQL 12 or newer, please see Обновление контейнера PostgreSQL for upgrade instructions. Weblate itself supports older versions as well, when appropriate Django version is installed.
Предупреждение
Migration on MySQL will try to load all metrics into memory due to limitation of the Python database driver. You might need to prune metrics prior to migration if you want to continue using MySQL. Please consider switching to PostgreSQL, see Переход с других баз данных на PostgreSQL.
См.также
Upgrade from 4.17 to 4.18#
Для выполнения обновления, пожалуйста, следуйте общим инструкциям по обновлению.
Dropped support for PostgreSQL 10, 11, MySQL 5.7 and MariaDB 10.2, 10.3.
Dropped support for Python 3.7.
The Формат Fluent format changed identification of some strings, you might need to force reloading of the translation files to see the changes.
См.также
Обновление с Python 2 на Python 3#
Weblate больше не поддерживает Python старее версии 3.6. В случае, если вы всё ещё работаете на более старой версии, пожалуйста, сначала выполните миграцию на Python 3 на существующей версии и обновите её только после перехода. Смотрите раздел Обновление с Python 2 на Python 3 в документации к Weblate 3.11.1.
Переход с других баз данных на PostgreSQL#
Если вы используете Weblate не на PostgreSQL, а на другой базе данных, вам следует рассмотреть возможность перехода на PostgreSQL, поскольку Weblate работает лучше всего именно с ней. Следующие шаги помогут вам перенести данные между базами данных. Пожалуйста, не забудьте остановить веб-сервер и сервер 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
Переход с использованием 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#
As Weblate was originally written as replacement from Pootle, it is supported
to migrate user accounts from Pootle. You can dump the users from Pootle and
import them using weblate importusers
.